仅获取和设置公共列表<>类/对象中的成员/字段

本文关键字:对象 字段 成员 获取 设置 列表 | 更新日期: 2023-09-27 18:35:05

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

目前我可以通过以下方式获取所有公共字段:

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

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

因此,在求和中,我想获取对象的所有公共字段。整理列表<>,并设置这些成员。

感谢您提供的任何帮助!

仅获取和设置公共列表<>类/对象中的成员/字段

像这样的事情怎么样,

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"
        });
    }
}