我想處理從類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