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

标签 c# .net reflection

我有一个项目包含很多引用资料。
我需要找到所有实现 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/

相关文章:

c# - 如何在 Silverlight XAML 中引用另一个命名空间中的绑定(bind)转换器?

c# - 在 Mono .Net Threads 中,线程是粘在周围,还是?

java - 代理困惑的优雅解决方案

.net - typeof(System.Enum).IsClass == false

c# - .NET GC 删除正在使用的对象

c# - 恰好 N 个元素的正则表达式,不多不少

c# - NameValueCollection 与 Dictionary<string,string>

c# - 在 Application_Start 上启动长时间运行的线程时的潜在陷阱

c# - 如何等待已结束的IObserver调用,包括观察订户调用?

C# 反射和获取属性