2

我有一个对象/类,我想只为它获取任何公共 List<> 成员/字段的列表/数组。稍后设置这些成员。

目前我可以通过以下方式获得所有公共领域:

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

一些研究表明我可以测试 GetGenericTypeDefinition() == typeof(List<>),但我无法直接针对 fieldValues 中返回的值进行测试。

所以总而言之,我想获取一个对象的所有公共字段。整理 List<>,并设置这些成员。

感谢您提供的任何帮助!

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 回答