我有一个采用单个通用参数的基类。然后,我有几个从该基类继承的类。有没有简单的方法可以让子类从基类继承工厂?
例
class BaseClass<T>
{
T Value {get; set;}
string Name {get; set;}
public static BaseClass<T> Factory(T Value)
{
return new BaseClass<T>(Value);
}
}
class ChildClass : BaseClass<int>
{
public void Test()
{
// I want this below to work
// but Factory() returns a BaseClass
ChildClass bs = ChildClass.Factory(10);
}
}
我已经在代码中指出了我想要的工作。我可以想出一种克服此问题的方法,可以在BaseClass或SubClass中添加一个从BaseClass转换为ChildClass的隐式运算符。
我还可以将Factory显式地添加到ChildClass中,但是这样就无法继承。
有没有更好,更标准化的方式来做到这一点?
最佳答案
我会做这样的事情:
class BaseClass<T, K> where K : BaseClass<T, K>, new()
{
T Value { get; set; }
string Name { get; set; }
public static K Factory(T value)
{
return new K { Value = value };
}
}
class ChildClass : BaseClass<int, ChildClass>
{
public void Test()
{
ChildClass cs = Factory(10);
}
}