我知道 C # 不支持静态方法继承。我还阅读了一些讨论(包括这里) ,其中开发人员声称需要这个功能,对此的典型反应是“如果您需要静态成员继承,那么您的设计中存在一个缺陷”。
好的,考虑到 OOP 甚至不希望我考虑静态继承,我必须得出结论,我对它的明显需求指向了我的设计中的一个错误。但是,我卡住了。如果你能帮我解决这个问题,我会很感激的。挑战来了。
我想创建一个抽象的基类(我们称之为 Fruit) ,它封装了一些复杂的初始化代码。此代码不能放置在构造函数中,因为其中一些代码将依赖于虚方法调用。
Fruit 将被其他具体类(Apple、 Orange)继承,每个类都必须公开一个标准工厂方法 CreateInstance ()来创建和初始化一个实例。
如果静态成员继承是可行的,我将把工厂方法放在基类中,并使用对派生类的虚方法调用来获取必须初始化具体实例的类型。客户机代码将简单地调用 Apple。CreateInstance ()获取完全初始化的 Apple 实例。
但显然这是不可能的,所以有人可以解释如何我的设计需要改变,以适应相同的功能。