检查对象是否是通过Activator.CreateInstance的接口

本文关键字:CreateInstance 接口 Activator 对象 是否是 检查 | 更新日期: 2023-09-27 18:32:30

我正在使用Activator.CreateInstance在运行时从Dll创建一个对象,

如果对象是接口,则会出现错误,并且我不想创建该接口的对象。

所以我的问题是否有任何选项可以检查对象是否是接口而不是类?

检查对象是否是通过Activator.CreateInstance的接口

由于我不想单独回复每个答案,因此您应该使用类型。是抽象而不是类型。IsInterface,因为您也不想在抽象类(和 .IsAbstract也涵盖了接口)。您可能还没有遇到过这个问题,但这肯定是一个潜在的问题。

你的意思是你想检查一个类型是否是接口类型吗?如果是这样,这很容易:

if (type.IsInterface)

如果你的意思是"这个对象是实现任何接口的类型",它仍然是可行的,但更难,可能不太有用......

你可以这样做:

Type t = obj.GetType();
t.IsInterface()

这会有帮助吗?

Type t = typeof(T);
if (t.IsInterface) {
} else {
}

顺便说一下,您声明您不想创建作为接口的对象。不可能做到因缘;但是,您可以实例化类并定义实现接口的结构。

var obj = new MyClass();  // OK
var s = new MyStruct();  // OK
var i = new IMyInterface(); // NOT POSSIBLE!

接口没有实现。它们是类和结构在假装实现接口时必须履行的协定。