Lea*_*ner 0 .net c# reflection typeof
我有两个接口IConfigurationManager
并ILocator
在同一个程序集中定义(让我们称之为程序集"A")和相同的命名空间.
有一个名为"B"的启动项目,它对程序集"A"有"项目引用".
程序集A也包含两个接口的具体实现.我在程序集A上有一个"post-build事件",它将DLL复制到"B"项目的'bin\debug'文件夹,当我从visual studio 2012运行它时运行应用程序.
在app.config文件中,我提到了当我想要两个接口的具体实现时要使用的程序集和类型.(我需要在运行时解析类型映射,并且将在不同的程序集中具有接口和实现,而我根本没有开发它们.)
在我的代码中,我Assembly.LoadFile()
从启动项目的'bin\debug \'文件夹中加载程序集A(使用).然后我遍历所有类型并ILocator
使用以下代码检查类是否是类型:
if(type.GetInterfaces.Contains(typeof(IConfigurationManager))
Run Code Online (Sandbox Code Playgroud)
这返回FALSE,但另一方面,ILocator
返回TRUE的类似代码.为什么会这样?我也尝试过使用IsAsseignableFrom()
,但结果相同.
为什么一个调用成功而另一个调用失败时,所有内容(如声明接口的程序集,加载了哪个类型的程序集等)在检查类实现的接口时是否相同?
注意:我知道Unity
容器等.但我仍然有与使用反射进行类型检查相关的相同问题.
归档时间: |
|
查看次数: |
303 次 |
最近记录: |