将基本继承的类填充为一个对象,而不是链接每个属性

时间:2015-02-06 13:56:00

标签: c# inheritance

我有以下情况

情景1:

public class TT : t
{
    public int x { get; set; }
    public TT(t name, int name2)
    {
        this.att1 = name.att1;
        this.att2 = name.att2;
        this.att3 = name.att3;
        x = name2;
    }
}

情景2:

public class TT : t
{
    public int x { get; set; }
    public TT(t name, int name2)
    {
        this = name;
        x = name2;
    }
}

有没有办法将基本继承的类“t”作为整个对象传递,而不是必须从基类的属性中分配每个属性?

2 个答案:

答案 0 :(得分:1)

  

有没有办法传递基础继承的类" t"作为整个对象,而不是必须从基类的属性中分配每个属性?

没有。您无法在类(或任何其他方法)的构造函数中重新分配this。另外,请记住,name将是对象的引用,而不是对象本身,因此,即使您可以重新分配this,您也可以# 39; d指向同一个对象,而不是复制其值。

您需要逐个字段地复制源类中的值。无论是在这个构造函数中还是在基本构造函数中执行此操作(如果您有多个要添加此功能的子类,这将是有帮助的),以及您是明确地使用还是使用反射都取决于您。

答案 1 :(得分:0)

您可以在基类中创建copy constructor并像这样使用它:

public class TT : t
{
    public int x { get; set; }
    public TT(t name, x name2):base(name)
    {
        x = name2;
    }
}

如果您不想手动处理基本拷贝构造函数,可以使用ReflectionExpression Trees自动化它