C#泛型复制构造函数
我有一个泛型类,我想实现它的副本构造函数C#泛型复制构造函数,c#,generics,C#,Generics,我有一个泛型类,我想实现它的副本构造函数 public abstract class BaseClass<T> { protected T Data { get; set; } protected BaseClass(T other) { this.Data = other.Data; } } 公共抽象类基类 { 受保护的T数据{get;set;} 受保护基类(T其他) { this.Data=其他.Data; } }
public abstract class BaseClass<T>
{
protected T Data { get; set; }
protected BaseClass(T other)
{
this.Data = other.Data;
}
}
公共抽象类基类
{
受保护的T数据{get;set;}
受保护基类(T其他)
{
this.Data=其他.Data;
}
}
我得到编译错误,即other
没有字段名数据
我考虑过使用dynamic,因此构造函数签名将是基类(dynamic other),还有其他方法吗?您的复制构造函数采用T
类型参数,但您将其视为基类
以下两种方法都可以解决您的问题,但由于您希望将其称为复制构造函数,因此第二种方法更适合您:
public abstract class BaseClass<T>
{
protected T Data { get; set; }
protected BaseClass(T other)
{
this.Data = other;
}
}
公共抽象类基类
{
受保护的T数据{get;set;}
受保护基类(T其他)
{
这个数据=其他;
}
}
秒:
public abstract class BaseClass<T>
{
protected T Data { get; set; }
protected BaseClass(BaseClass<T> other)
{
this.Data = other.Data;
}
}
公共抽象类基类
{
受保护的T数据{get;set;}
受保护基类(基类其他)
{
this.Data=其他.Data;
}
}
dynamic不起作用-t
没有名为Data
的属性。您应该在构造函数中接受基类
,或者将代码更改为this.Data=other
(取决于您的需要)。然而,这充其量只是一个浅拷贝-您希望您的拷贝能深入到多深?出于一般目的,我希望它是一个深拷贝,因为我希望在TWell上强制执行IClonable,然后只添加一个一般约束,说明T必须实现IClonable-easy:-)