Nao*_*aor 1 .net c# reflection
我有一个项目包含很多参考.
我需要找到实现IMyInterface接口的所有类型.
我试过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()));
Run Code Online (Sandbox Code Playgroud)
搜索实现您的界面的类型:
var withInterfaces =
types.Where(t => t.GetInterfaces().Any(i => i == typeof(IDisposable)));
Run Code Online (Sandbox Code Playgroud)
如果这不是诀窍我也迷失了......