一尘不染

获取实现接口的所有类型

c#

使用反射,如何以最少的代码获得使用C#3.0 / .NET 3.5实现接口的所有类型,并最大程度地减少迭代次数?

这是我要重写的内容:

foreach (Type t in this.GetType().Assembly.GetTypes())
    if (t is IMyInterface)
        ; //do stuff

阅读 206

收藏
2020-05-19

共1个答案

一尘不染

我在C#3.0中会是这样的:)

var type = typeof(IMyInterface);
var types = AppDomain.CurrentDomain.GetAssemblies()
    .SelectMany(s => s.GetTypes())
    .Where(p => type.IsAssignableFrom(p));

基本上,最少的迭代次数始终是:

loop assemblies  
 loop types  
  see if implemented.
2020-05-19