我收到了一个 fi 对象..它是某个匿名对象的字段。
如果它属于Generic class List
,我想登记对象 fi 的每个元素if(fi.FieldType.IsGenericType && fi.FieldType.GetGenericTypeDefinition() == typeof(List<>))
{
foreach (object element in (XXX) k.Value)
{
}
}
对于那个特定的对象,我知道它是List,所以我可以施放(List)。
我的问题是:我应该投什么,不关心列表元素的类型是什么?
我尝试了List&lt;&gt ;, List ..它说我必须设置元素类型才能获得强制转换。
帮助..请。
数组只是为了让它可以运行
UPD:我认为只有当你处理了对象时才转换为接口(IList),在我的情况下它是一个对象的值..所以这意味着如果我与Generic达成协议,那么我应该继续使用Object,但没有使用它的值,对吗?
答案 0 :(得分:0)
您需要获取特定实例的字段值,然后您可以迭代它。您可以按如下方式实现此目的:
if (fi.FieldType.IsGenericType && fi.FieldType.GetGenericTypeDefinition() == typeof(List<>))
{
var value = (IList)fi.GetValue(myObject); // <- get field value, cast it to IList
foreach (var element in value)
{
Console.WriteLine(element);
}
}