我有一个基类,它接受一个通用参数.然后我有几个继承自这个基类的类.子类是否有一种简单的方法来固定基类中的工厂?
例
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);
}
}
Run Code Online (Sandbox Code Playgroud)
我在代码中注意到了我想要的工作.我可以想出一种方法来解决这个问题,方法是将一个隐式运算符添加到从BaseClass转换为ChildClass的BaseClass或SubClass.
我也可以明确地将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);
}
}
Run Code Online (Sandbox Code Playgroud)