我有以下场景:
我有一个数组列表,它可能包含我在运行时只能访问的三种可能的对象类型之一。
Fort这个例子让我们调用它们:
ObjType1
ObjType2
ObjType3
然后我需要遍历数组列表并从每个对象访问几个属性(所有三个对象类型包含相同的两个属性名称),然后将这些值设置为三个其他对象类型之一的属性。最后,需要将新对象添加到数组List中。
ObjType4
ObjType5
ObjType6
由于我不知道数组列表提前包含什么对象类型,我猜我需要使用反射来获取对象属性。一旦我有了属性,我就可以将它们添加到包含与ObjType 4,5和6相同的两个属性的泛型类中,然后将泛型类对象转换为传递给子过程/函数的所需对象类型,然后添加它到数组列表。
在您看来,实现这一目标的最佳方式是什么?
感谢每个人的时间
编辑 - 我之前应该提到我无权更改这三个类。
答案 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;
}
}