gpt4 book ai didi

C#:通用继承工厂

转载 作者:行者123 更新时间:2023-11-30 14:02:51 25 4
gpt4 key购买 nike

我有一个接受单个泛型参数的基类。然后我有几个继承自该基类的类。有没有一种简单的方法可以让子类从基类继承一个工厂?

例子

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。

我也可以直接将工厂显式添加到 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);
}
}

关于C#:通用继承工厂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5062524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com