如何在C#中反映嵌套委托?

时间:2015-11-18 22:41:09

标签: c# reflection delegates

给出以下(最小)类:

public class TestEvents
{
    public delegate void MyDelegate(params string[] data);

    public TestEvents()
    {
    }
}

如果从程序集中检索表示此类的Type对象,如何识别此类中定义的所有嵌套委托?我可以找到很多关于如何通过反射来调用委托的信息,但是没有关于如何从开头的Type对象中获取合适的对象的任何信息(没有知道委托名称)。

1 个答案:

答案 0 :(得分:1)

您必须遍历嵌套类型并测试它们是否来自MulticastDelegate

var delegates = typeof(TestEvents).GetNestedTypes().Where(x => x.BaseType == typeof(MulticastDelegate));
foreach(var del in delegates)
    Console.WriteLine(del.Name);