2017-03-03 22 views
-1

获取列表关在一个特定的.NET程序集定义的类和给定命名空间我会做这样的事情:如何从.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

检查类型是否可赋给'Delegate'(或'MulticastDelegate',在现实世界中没有区别) – leppie

回答

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); 
    } 
} 
相关问题