繁体   English   中英

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

[英]Check if Object is Interface via Activator.CreateInstance

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

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

所以我的问题是,有什么选择可以检查对象是否是接口而不是类?

因为我不想分别回答每个答案,所以应该使用type.IsAbstract而不是type.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!

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM