两个程序集中的C#类型质量

本文关键字:类型 集中 程序集 两个 程序 | 更新日期: 2023-09-27 18:24:05

我有一个引用COMMON项目的项目A。在COMMON项目中,我有接口T。我有另一个DLL B。B项目引用了COMMON项目。COMMON dll位于这两个文件夹中。

在项目A中,我使用assembly.LoadFromFile加载程序集B。我需要找到实现接口T的所有类型。

var types = (from type in assembly.GetExportedTypes() 
where typeof(T).IsAssignableFrom(type) select type).ToList();

我得到了0码系列。此外,我还在快速观察对话框窗口中手动检查类型,如:

typeof(T) == assembly.GetExportedTypes()[0].GetInterfaces()[0] 

结果为假。

两个程序集中的C#类型质量

此表达式:

X.IsAssignableFrom(Y)

基本上是问,你能做类似的事情吗:

X x = expressionOfTypeY;

在你的情况下,你会问这个:

ClassType x = expressionOfInterfaceType;

这是错误的做法。

请尝试以下LINQ查询:

where typeof(T).IsAssignableFrom(type)

这不应该是吗

var types = (from type in assembly.GetExportedTypes() 
where typeof(T).IsAssignableFrom(type) select type).ToList();

好的,我解决了我的问题。

我从插件文件夹中删除了common.dll,并将"Copy Local"选为false。我还在两个项目中使用autofac,所以对于这个DLL,我采取了相同的步骤。

谢谢你的回答。