有我无法控制的金牌课程。它具有工厂方法:
public static Gold TransmuteFromLead(Lead someLead);
我现在将Gold细分为我自己的Class GoldWatch。我有一个铅对象。有没有一种方法可以在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/