我有一个泛型类型G<T> where T : A,其中A是一个抽象类.在每个B派生的类中,A我希望有一个类型的字段G<B>,而不需要编写重复代码,但是我不确定它是否可能.一种方法是这样做
abstract class A
{
    protected object g;
    protected abstract void SetG();
    public A()
    {
        SetG();
    }
}
class B : A
{
    protected override void SetG()
    {
        this.g = new G<B>();
    }
    public B() : base() {}
}
但这意味着每个派生类中都会有很多重复代码.有一个更好的方法吗?
您可以在其间添加一个额外的抽象类:
public abstract class A<T> : A where T : A
{
    protected override void SetG()
    {
        this.g = new G<T>();
    }
}
...然后,将您的B声明更新为:
public class B : A<B>
{
    public B() : base() { }
}
| 归档时间: | 
 | 
| 查看次数: | 125 次 | 
| 最近记录: |