2

特定のタイプの静的フィールドを多数持つクラスがありますFoo。コードを単純化して短縮するために、それらを配列に入れることを考えました (つまり、もちろんそれらの参照)。

各フィールド名を明示的に書き出してリスト/配列に入れるだけでそれを行うことができます..(つまりmyList.Add(this.A))..しかし、それらのフィールドがたくさんあり、それらは時々変わるので、リフレクションを介してすべてやりたい..できるはずですよね?

public class MyClass
{
    public static Foo A = new Foo(...);
    public static Foo B = new Foo(...);
    public static Foo C = new Foo(...);
    (...)

    public List<Foo> getFoos()
    {
        MemberInfo[] allFooFields = typeof(MyClass).GetFields();

        // Fill In Foo Fields into a List
        var listOfFooFields = new List<Foo>;

        // ???

        return listOfFooFields;
    }
}
4

1 に答える 1

4

これを使って:

public List<Foo> getFoos()
{
    return typeof(MyClass).GetFields(BindingFlags.Static | BindingFlags.Public)
                          .Where(x => x.FieldType == typeof(Foo))
                          .Select(x => x.GetValue(null))
                          .Cast<Foo>()
                          .ToList();
}
于 2011-10-20T12:46:14.123 に答える