簡體   English   中英

如何獲取繼承自特定類型的類的所有方法

[英]How to get all methods for class that inherit from a particular type

我有一堆從基類“ Port”繼承的類

有誰知道如何獲取所有繼承自“ Port”的類的所有公共方法

我知道我必須調用GetMethods方法,並且您將其稱為一種類型。

我想如果我能以某種方式獲得從Port繼承的所有類的列表,我可以這樣:

(所有類型都繼承自port).SelectMany(x => x.GetMethods());

有人可以幫忙嗎?

您可以使用如下形式:

Assembly assembly = [get your assembly instance];
Type t = typeof(Port)
var methods = assembly.GetTypes()
                 .Where(p => t.IsAssignableFrom(p))
                 .SelectMany(x => x.GetMethods());

好的,現在我們知道它們在同一個程序集中,我懷疑您要這樣做:

var methods = from type in typeof(Port).Assembly.GetTypes()
              where typeof(Port).IsAssignableFrom(type)
              from method in type.GetMethods()
              select method;

又名

var methods = typeof(Port).Assembly.GetTypes()
                          .Where(type => typeof(Port).IsAssignableFrom(type))
                          .SelectMany(type => type.GetMethods());

請注意,這在要獲取的類型列表中包含Port本身。

您可能希望使用BindingFlags.DeclaredOnly來避免一遍又一遍地使用相同的方法-這取決於您以后要對它們進行的處理。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM