两个程序集中的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]
结果为假。
此表达式:
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,我采取了相同的步骤。
谢谢你的回答。