使用反射,如何以最少的代码获得使用C#3.0/.NET 3.5实现接口(interface)的所有类型,并最大程度地减少迭代次数?
这是我要重写的内容:
foreach (Type t in this.GetType().Assembly.GetTypes())
if (t is IMyInterface)
; //do stuff
最佳答案
我在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.