我有一个通用类型 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() { }
}
关于c# - 在派生类中设置泛型类型属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37845314/