我想处理从类A派生的类的方法。类A和派生类驻留在不同的程序集中。我使用反射从派生程序集中获取所有System.Type,并遍历其方法。通过反射确定派生类
Assembly A: class Template {...}
Assembly B: class X: A.Template {...}
Assembly B: class Y: A.Template {...}
Assembly B: class Z: A.Template {...}
当我尝试迭代X
类的装配B
的方法,它包括A
类的所有方法。我想要实现的只是遍历派生类中存在的那些方法。
我不认为在不同的程序集中很重要,但即使我尝试根据程序集过滤该方法的声明类型,它也不起作用。
我尝试过使用MethodInfo
对象的各种属性,但一直未能过滤掉它。我确信我错过了一些愚蠢的检查,但一直在挣扎着这么久。
任何意见,将不胜感激。
'BindingFlags.DeclaredOnly' help any? – 2013-05-12 21:38:52
您是否尝试过使用'DeclaredOnly'绑定标志获取方法? 'typeof(X).GetMethods(BindingFlags.DeclaredOnly)' – 2013-05-12 21:39:01
谢谢。我实际上是在寻找私有方法,字段和属性,并没有意识到你必须使用'BindingFlags.Instance | BindingFlags.NonPublic'标志。那,除了BindingFlags.Declared,只工作。 – 2013-05-13 10:10:38