如何获取实现IMyInterface的引用中的所有类型

Nao*_*aor 1 .net c# reflection

我有一个项目包含很多参考.
我需要找到实现IMyInterface接口的所有类型.

我试过AppDomain.CurrentDomain.GetAssemblies().SelectMany(x => x.GetTypes())但它没有返回引用中的所有类型.

我怎么做?

Car*_*ten 5

我想问题可能是你当前没有加载一些引用的程序集.您可以使用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)

如果这不是诀窍我也迷失了......