【问题标题】:Recognize delegates with MethodInfo使用 MethodInfo 识别委托
【发布时间】:2011-07-12 20:34:05
【问题描述】:

我想使用反射识别一个类的所有委托。我不想调用它们,只是识别。我想我可以这样使用getMembers()

Type t = myType;
MemberInfo[] mia = t.GetMembers(BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic).OrderBy(item => item.Name).ToArray();
foreach (MemberInfo m in mia)
{
    //Find delegates
}

编辑:委托示例:

class ClassTest
{
    public delegate void SampleEventHandler(object sender, EventArgs e);
}

用这个方法,或者其他方法可行吗?

感谢您的回答!

【问题讨论】:

  • 所有代表是什么意思?
  • “班级代表”是什么意思?你能举一个你试图检测的例子吗?
  • 您想识别与方法签名匹配的委托类型吗?还是在您的班级中定义的代表?你的问题对我来说并不完全清楚。
  • 一个帖子就够了...

标签: c# reflection delegates


【解决方案1】:

委托只是一个(特殊的,编译器生成的)类,可以在类中声明为嵌套类型 - 但请记住,它们也可以像普通类一样直接在命名空间中声明。

这将找到给定类型t 中的所有嵌套类型,它们是委托:

private IEnumerable<Type> DelegatesDefinedInType(Type t) 
{
    var nestedTypes = t.GetNestedTypes();    
    return nestedTypes.Where(typeof(Delegate).IsAssignableFrom);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-02
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多