3

静的メンバーを持つクラスがあります。クラスが名前空間「foo」で定義され、クラス「bar」から継承されるすべての静的メンバーのリストを取得したい

何かのようなものlist x= typeof(this).staticmembers.where(namespace == "foo");

試行 1:

 var AllowedTypes = GetType().Assembly.GetTypes()
       .Where(x => x.Namespace == "XX.XXX.XXX")
       .Where(x => x.IsAssignableFrom(typeof(UserControl)));

    var StaticMembersOfAllowedTypes = typeof(MainWindowXX).GetMembers  (System.Reflection.BindingFlags.Static ).Where(item => AllowedTypes.Contains(item));

これにより、メンバー情報のリストが表示されますが、アイテム自体が必要です。

そのため、 foreach アイテムを別のアイテムと比較できます。

4

1 に答える 1

4

これでうまくいくと思います。誤字脱字があるかもしれませんが確認できませんでした

var list x = GetType().Assembly.GetTypes()
                    .Where(x => x.Namespace == "foo" && typeof(bar).IsAssignableFrom(x))
                    .SelectMany(x => x.GetMembers(BindingFlags.Static));

次を追加する必要がある場合がありますBindingFlags.Public

x.GetMembers(BindingFlags.Static | BindingFlags.Public)
于 2012-06-13T15:05:18.853 に答える