2

オブジェクト/クラスがあり、それだけのパブリックList<>メンバー/フィールドのリスト/配列を取得したいと思います。そして後でそれらのメンバーを設定します。

現在、私はすべてのパブリックフィールドを取得できます:

var fieldValues = obj[index].GetType().GetFields(BindingFlags.Instance | BindingFlags.Public);

少し調べてみると、GetGenericTypeDefinition()== typeof(List <>)をテストできるとのことですが、fieldValuesで返された値に対してこれを直接テストすることはできません。

要約すると、オブジェクトのすべてのパブリックフィールドを取得したいと思います。リスト<>を整理し、それらのメンバーを設定します。

提供された助けに感謝します!

4

1 に答える 1

1

このようなものはどうですか、

var fieldValues = test.GetType().GetFields(BindingFlags.Instance | BindingFlags.Public);

foreach(var fieldValue in fieldValues)
{
    if (fieldValue.FieldType.IsGenericType && fieldValue.FieldType.GetGenericTypeDefinition() == typeof(List<>))
    {
        fieldValue.SetValue(test, new List<string>()
        {
            "List Item 1",
            "List Item 2"
        });
    }
}
于 2012-05-22T04:19:51.167 に答える