检查对象是否是通过Activator.CreateInstance的接口
本文关键字:CreateInstance 接口 Activator 对象 是否是 检查 | 更新日期: 2023-09-27 18:32:30
我正在使用Activator.CreateInstance在运行时从Dll创建一个对象,
如果对象是接口,则会出现错误,并且我不想创建该接口的对象。
所以我的问题是否有任何选项可以检查对象是否是接口而不是类?
由于我不想单独回复每个答案,因此您应该使用类型。是抽象而不是类型。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!
接口没有实现。它们是类和结构在假装实现接口时必须履行的协定。