在运行时加载的程序集上键入check

时间:2016-02-06 15:25:24

标签: c# .net dll mono

我在运行时使用带有mono的外部dll时遇到问题。 假设我们有一个包含接口IMyInterface的框架dll,这是一个使用此框架的“插件”项目,其中一个类实现了IMyInterface接口。 这个插件一旦部署为dll,就可以在运行时从框架本身加载,并且所有实现IMyInterface的类都必须添加到框架内的集合中。为此,必须对所有类型进行类型测试。不幸的是,当我从加载的dll中获取所有类型时,即使导入的类正在实现已知接口,类型测试也会失败。更准确地说,以下陈述

ImportedType.GetType().IsAssignableFrom(typeof(IMyInterface))

返回false,即使该类型实际实现了IMyInterface。我想这是关于导入类型是System.RuntimeType,而不是System.Type。但是我该如何处理这个问题呢?可能是接口IMyInterface在不同解决方案使用的同一个程序集中有不同的签名吗?

1 个答案:

答案 0 :(得分:0)

IsAssignableFrom是最令人困惑的方法之一

typeof(IMyInterface).IsAssignableFrom(myObject.GetType())
typeof(IMyInterface).IsAssignableFrom(ImportedType)

https://msdn.microsoft.com/en-us/library/system.type.isassignablefrom(v=vs.110).aspx