要获取特定.NET程序集和给定命名空间中定义的类的列表,我会执行以下操作:
foreach (var type in assembly.GetTypes()
.Where(t => t.IsClass && t.Namespace == @namespace))
{
//process type
}
这将返回类和委托,因此如果存在像
这样的委托声明public delegate void MyDelegate()
MyDelegate
也由上述循环处理。
我想只通过委托类型循环。
我希望Type类具有IsDelegate
属性,但没有。
我看到代表委托的类型有基类型System.MulticastDelegate
- 它是正确的过滤器还是我遗漏了什么?
答案 0 :(得分:0)
foreach (var type in assembly.GetTypes()
.Where(t => t.IsClass && t.Namespace == @namespace && t.IsDelegate()))
{
//process delegate type
}
public static class TypeExtensions
{
public static bool IsDelegate(this Type type)
{
return type.BaseType == typeof(MulticastDelegate);
}
}