使用反射,我有一个对象需要转换为一个可迭代的项列表(类型未知,将是对象)。在 Watch 窗口中,我可以看到我的对象是某种类型的数组,因为它告诉我元素数量,我也可以展开树形视图查看元素本身。
首先,我需要检查传递的对象是否是某种数组(可能是 List,可能是 object[] 等)。然后我需要遍历该数组。但是,我无法进行类型转换。
这是我如何使用它的方式(缩写):
private static void Example(object instance, PropertyInfo propInfo)
{
object anArray = propInfo.GetValue(instance, null);
ArrayList myList = anArray as ArrayList;
foreach (object element in myList)
{
// etc
}
}
我已经尝试了各种不同的强制类型转换。上面的代码没有引发异常,但是当anArray实际存在并包含项时,mylist为null。实际保存的实例是一个强类型的List <>, 但如果需要,可以采用有限的子集形式。但是这个Example()方法的重点在于它不知道属性的基本类型。
is
运算符将其与所需类型进行比较,例如:if (instance.GetType() is IEnumerable)
。 - Ruslan