Скажем, у меня есть функция, которая принимает анонимный тип. Если тип, который передается, фактически является списком. Затем, когда я пытаюсь получить поля внутри, он становится недействительным. Итак, теперь я проверяю, является ли это массивом, и если это массив, я сначала получу тип элемента перед получением полей. Но теперь я застрял, я все равно не могу индексировать каждый элемент внутри этого списка. Ниже приведен фрагмент функции. Какие-либо предложения?Как индексировать из System.Type
public static List<Variance> DetailedCompare<T>(T val1, T val2)
{
List<Variance> variances = new List<Variance>();
FieldInfo[] fi;
if(!val1.GetType().IsArray)
fi= val1.GetType().GetFields(BindingFlags.Instance |
BindingFlags.Static |
BindingFlags.NonPublic |
BindingFlags.Public);
else
fi = val1.GetType().GetElementType().GetFields();
foreach (FieldInfo f in fi)
{
Variance v = new Variance();
v.Prop = f.Name;
v.valA = f.GetValue(val1);
v.valB = f.GetValue(val2);
if (!v.valA.Equals(v.valB))
{
DetailedCompare(v.valA, v.valB);
variances.Add(v);
}
}
return variances;
}
Спасибо. Это прекрасно работает. вы чемпион. Но, к сожалению, им еще далеко от завершения задачи. Есть еще много неожиданных проблем. – CJC