我有一个项目包含很多引用资料。
我需要找到所有实现 IMyInterface 接口(interface)的类型。
我试过 AppDomain.CurrentDomain.GetAssemblies().SelectMany(x => x.GetTypes())
但它没有返回引用中的所有类型。
我该怎么做?
最佳答案
我猜问题可能是您引用的某些程序集当前未加载。您可以使用 GetReferencedAssemblies 获取所有引用的程序集- 但这只会产生名称。
如果您愿意,可以继续使用 Assembly.Load 加载程序集并进一步检查它们。
所以一个可能的片段应该是
var types =
System.Reflection.Assembly.GetExecutingAssembly()
.GetReferencedAssemblies()
.SelectMany(name => Assembly.Load(name).GetTypes())
.Union(AppDomain.CurrentDomain.GetAssemblies().SelectMany(a => a.GetTypes()));
搜索实现接口(interface)的类型:
var withInterfaces =
types.Where(t => t.GetInterfaces().Any(i => i == typeof(IDisposable)));
如果这还不行,我也迷路了......
关于c# - 如何获取实现 IMyInterface 的引用中的所有类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7236096/