C# 从对象实例和属性信息获取列表引用

C# 从对象实例和属性信息获取列表引用,c#,.net,reflection,C#,.net,Reflection,我有一个未知对象的实例,我正在迭代它的属性,我必须检索每个属性的每个实例,目前这是我的解决方案: private static void WriteMembers(object arg, XmlWriter writer, object[] attributes) { foreach (var property in arg.GetType().GetProperties()) { if (attributes.All(x => x.GetType() !=

我有一个未知对象的实例,我正在迭代它的属性,我必须检索每个属性的每个实例,目前这是我的解决方案:

private static void WriteMembers(object arg, XmlWriter writer, object[] attributes)
{
    foreach (var property in arg.GetType().GetProperties())
    {
        if (attributes.All(x => x.GetType() != typeof (XmlIgnoreAttribute)))
        {
            if (property.GetIndexParameters().Length > 0)
            {
                //how to get list reference?
            }
            else
            {
                var value = property.GetValue(arg, null);

                if (value != null)
                {
                    WriteMember(value, property.Name, writer, property.GetCustomAttributes(false));
                }
            }
        }
    }
}
但是我不能使用
PropertyInfo.GetValue
获取列表引用,因为它抛出
TargetParameterCountException
,因为列表具有索引属性


如何检索列表实例?

为了获取indexes属性,您需要知道请求的类型以及每种类型的所有可能条目,包括哪些条目可能存在或可能不存在或引发异常。您不能只获取索引属性,因为索引属性可以返回任意数量的值中的一个,甚至可以动态生成它们


在处理列表时,最好简单地忽略索引属性,而是手动复制基础数据。通过对象的
GetEnumerator()

有条件地处理
IEnumerable
对象的情况可以使这变得更容易,但是如果我没有对象的引用,我将如何调用
GetEnumerator()