假设我们有一堂课
class ComplexCls
{
public int Fld1;
public string Fld2;
//could be more fields
}
class Cls
{
public int SomeField;
}
然后一些代码
class ComplexClsList: List<ComplexCls>;
ComplexClsList myComplexList;
// fill myComplexList
// same for Cls
class ClsList : List<Cls>;
ClsList myClsList;
我们想从myComplexList填充myClsList,类似于(伪代码):
foreach Complexitem in myComplexList
{
Cls ClsItem = new Cls();
ClsItem.SomeField = ComplexItem.Fld1;
}
做到这一点的代码很容易,并将被放入myClsList中的某些方法中。
但是,我想针对通用的ComplexCls设计尽可能的通用。
请注意,在使用此代码时,确切的ComplexCls是已知的,只有算法才是通用的。
我知道可以使用(直接)反射来完成,但是还有其他解决方案吗?
让我知道问题是否还不够清楚。 (可能不是)。
[编辑]基本上,我需要的是:拥有myClsList,我需要指定一个数据源(ComplexClsList)和该数据源(Fld1)中的一个字段,该字段将用于填充我的SomeField
最佳答案
这只是一个映射,因此请使用一些简单的LINQ:
ClsList myClsList = new ClsList();
myClsList.AddRange(
myComplexList.Select(Complexitem => new Cls { SomeField = Complexitem.Fld1 })
);