将Parent对象转换为C#中的Child对象

嗨,我想将父对象转换为C#中的子对象

public class Parent
{
    public string FirstName {get; set;}
    public string LastName {get; set;}
    public string City {get; set;}
}

public class Child : Parent
{
    public string PhoneNumber {get; set;}
    public string MobileNumber {get; set;}
}

现在的情况是父对象的列表,我想要生成子对象的列表,以便我可以有扩展的信息

List<Parent> lstParent;
List<Child> lstChild = new List<Child>();

foreach(var obj in lstParent)
{
    lstChild.add((Child)obj);
}

作为子类继承父类,所以子类已经有父类成员,我只想自动填充它,以便我可以填充子类的数据库

如果我明白您的“我只想自动填写”,您需要创建一个新的Child对象,该对象使用Parent的值填充,并为新属性设置默认值。最好的方法是创建一个复制值的构造函数:

public class Parent
{
   public string FirstName {get; set;}
    public string LastName {get; set;}
    public string City {get; set;}
}

public class Child : Parent
{
    public string PhoneNumber {get; set;}
    public string MobileNumber {get; set;}

    public Child (Parent parentToCopy)
    {
        this.FirstName = parentToCopy.FirstName;
        this.LastName = parentToCopy.LastName;
        this.City = parentToCopy.City;

        this.PhoneNumber = string.Empty; // Or any other default.
        this.MobileNumber = string.Empty;
    } 
}

现在,您可以像上面的答案一样在每个父项之间创建一个Child:

List<Child> lstChild = lstParent.Select(parent => new Child(parent)).ToList();

请注意,这与@ daryal的答案非常相似,但是将构建器中的父对子复制逻辑包装在新的Child()调用之外。

翻译自:https://stackoverflow.com/questions/9885644/cast-the-parent-object-to-child-object-in-c-sharp

转载注明原文:将Parent对象转换为C#中的Child对象