我有一个泛型类,我想实现
的复制构造函数public abstract class BaseClass<T>
{
protected T Data { get; set; }
protected BaseClass(T other)
{
this.Data = other.Data;
}
}
我收到编译错误,other
没有字段名称Data
。
我已经想过使用动态,所以构造函数签名将是BaseClass(动态其他),还有其他方法吗?
答案 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;
}
}