数组列表在运行时之前不知道类型

时间:2011-05-04 11:38:30

标签: c# .net reflection .net-3.5 arraylist

我有以下场景:

我有一个数组列表,它可能包含我在运行时只能访问的三种可能的对象类型之一。

Fort这个例子让我们调用它们:

ObjType1
ObjType2
ObjType3

然后我需要遍历数组列表并从每个对象访问几个属性(所有三个对象类型包含相同的两个属性名称),然后将这些值设置为三个其他对象类型之一的属性。最后,需要将新对象添加到数组List中。

ObjType4
ObjType5
ObjType6

由于我不知道数组列表提前包含什么对象类型,我猜我需要使用反射来获取对象属性。一旦我有了属性,我就可以将它们添加到包含与ObjType 4,5和6相同的两个属性的泛型类中,然后将泛型类对象转换为传递给子过程/函数的所需对象类型,然后添加它到数组列表。

在您看来,实现这一目标的最佳方式是什么?

感谢每个人的时间

编辑 - 我之前应该提到我无权更改这三个类。

3 个答案:

答案 0 :(得分:4)

您应该使所有三种类型都实现具有这些属性的接口 然后,您可以使用List<YourInterface>

答案 1 :(得分:1)

使用界面,将两个属性放入其中并将其应用于三个类中的每一个。这就是他们的目的。

答案 2 :(得分:0)

如果由于某种原因您无法更改类,则可以在循环时检查每个项目的类型:

string prop1 = "";
string prop2 = "";
foreach (object item in myArray)
{
   if (item is ObjType1)
   {
      prop1 = (item as ObjType1).FirstProp;
      prop2 = (item as ObjType1).SecondProp;
   }
   else if (item is ObjType2)
   {
      prop1 = (item as ObjType2).FirstProp;
      prop2 = (item as ObjType2).SecondProp;
   }
   else if (item is ObjType3)
   {
      (item as ObjType3).FirstProp = prop1;
      (item as ObjType3).SecondProp = prop2;
   }
}