有我无法控制的金牌课程。它具有工厂方法:

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/

10-10 02:35