C#泛型复制构造函数

时间:2016-04-18 22:15:14

标签: c# generics

我有一个泛型类,我想实现

的复制构造函数
public abstract class  BaseClass<T>
{
     protected T Data { get; set; }
     protected BaseClass(T other)
     {
          this.Data = other.Data;
     }

}

我收到编译错误,other

没有字段名称Data

我已经想过使用动态,所以构造函数签名将是BaseClass(动态其他),还有其他方法吗?

1 个答案:

答案 0 :(得分:7)

您的复制构造函数采用T类型参数,但您将其视为BaseClass<T>

以下两种方法都可以解决您的问题,但由于您想将其称为复制构造函数,第二种方法更适合您:

public abstract class  BaseClass<T>
{
    protected T Data { get; set; }
    protected BaseClass(T other)
    {
        this.Data = other;
    }
}

<强>第二

public abstract class  BaseClass<T>
{
    protected T Data { get; set; }
    protected BaseClass(BaseClass<T> other)
    {
        this.Data = other.Data;
    }
}