基本クラス「ポート」から継承するクラスがたくさんあります
「ポート」から継承するすべてのクラスのすべてのパブリック メソッドを取得する方法を知っている人はいますか
GetMethods メソッドを呼び出す必要があることはわかっていますが、これを型から呼び出します。
Port から継承するすべてのクラスのリストを何らかの方法で取得できれば、次のようになります。
(ポートから継承するすべての型).SelectMany(x => x.GetMethods());
誰でもここで助けることができますか?
基本クラス「ポート」から継承するクラスがたくさんあります
「ポート」から継承するすべてのクラスのすべてのパブリック メソッドを取得する方法を知っている人はいますか
GetMethods メソッドを呼び出す必要があることはわかっていますが、これを型から呼び出します。
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したい場合があります - それは後でそれらをどうしようとしているかによって異なります。