假设我们有一堂课

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 })
);

09-11 06:33