创建具有给定基类的派生类

创建具有给定基类的派生类

如果我有这个:

public class bClass
{
    int id {get; set;}
    string name {get; set;}
}

public class dClass : bClass
{
    int extraVal {get; set;}
}


我有一个bClass对象的列表:

List<bClass> baseClassList = getBaseClassList();


将baseClassList转换为以“ extralVal”设置为指定值的dClass对象列表的最简单方法是什么?我希望有一个类似的解决方案:

public class dClass : bClass
{
    public dClass(bClass b, int exVal)
    {
        base = b;
        extraVal = exVal;
    }
    int extraVal {get; set;}
}

List<dClass> dClassList = bClassList.ConvertAll(x => new dClass(x, exVal));


它实际上只是插入基础,然后设置额外的属性值,但显然这不是正确的语法。正确的方法是什么?

最佳答案

不确定确切的情况,但是投影可能会有所帮助?

bClassList.Select(i=>new dClass{ id=i.id, name=i.name, extraval=exVal});


或者您可以使用反射

public dClass(bClass c)
{
// copy base class properties.
 foreach (PropertyInfo prop in c.GetType().GetProperties())
 {
  PropertyInfo prop2 = c.GetType().GetProperty(prop.Name);
  prop2.SetValue(this,prop.GetValue(c, null), null);
 }
}

关于c# - 创建具有给定基类的派生类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17290580/

10-09 18:41