如何列出 .NET 程序集中的所有委托

How to list all delegates from a .NET assembly

要获取在特定 .NET 程序集和给定命名空间中定义的 classes 的列表,我会执行如下操作:

foreach (var type in assembly.GetTypes()
    .Where(t => t.IsClass && t.Namespace == @namespace))
{
    //process type
}

这个returns classes和delegates,所以如果有像

这样的delegate声明
public delegate void MyDelegate()

MyDelegate也是上面循环处理的

我只想遍历委托类型。 我希望类型 class 有类似 IsDelegate 属性 的东西,但有 none.

我看到代表委托的类型具有基本类型 System.MulticastDelegate - 它是正确的过滤器还是我遗漏了什么?

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);
    }
}