gpt4 book ai didi

c# - 使用工厂方法创建子类对象

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

有一个我无法控制的 Gold 类。它有一个工厂方法:

public static Gold TransmuteFromLead(Lead someLead);

我现在将 Gold 子类化以创建我自己的类 GoldWatch。我有一个 Lead 对象。有没有一种方法可以在 GoldWatch 中编写一个 TransmuteFromLead 方法,它以某种方式使用 Gold 的 TransmuteFromLead 方法但生成一个 GoldWatch 对象?

有关类似但不完全相同的问题,请参阅 What's the correct alternative to static method inheritance?但是我的情况不同,因为我不控制基类。

最佳答案

您可以使用隐式运算符:

public static implicit operator GoldWatch(Gold g)
{
return new GoldWatch(g);
}

然后在 GoldWatch 上添加构造函数以从 Gold 对象启动自身。

这将允许您这样做:

var goldWatch = (GoldWatch)TransmuteFromLead(someLead);

甚至这样:

GoldWatch goldWatch = TransmuteFromLead(someLead);

关于c# - 使用工厂方法创建子类对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21992851/

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