我知道C#不支持静态方法继承.我也读过一些讨论(包括这里),其中开发人员声称需要这个功能,典型的回答是"如果需要静态成员继承,那么设计中就有缺陷".
好的,鉴于OOP甚至不想让我考虑静电继承,我必须得出结论,我对它的明显需求指出了我的设计中的一个错误.但是,我被困住了.如果能帮我解决这个问题,我会非常感激.挑战来了.
我想创建一个封装了一些复杂初始化代码的抽象基类(让我们称其为Fruit).此代码不能放在构造函数中,因为其中一些代码将依赖于虚方法调用.
水果将被其他具体类(Apple、Orange)继承,每个类都必须公开一个标准的工厂方法CreateInstance()来创建和初始化实例.
如果静态成员继承是可行的,我会将工厂方法放在基类中,并使用对派生类的虚拟方法调用来获取必须从中初始化具体实例的类型.客户端代码将简单地调用Apple.CreateInstance()以获取完全初始化的Apple实例.
但显然这是不可能的,所以请谁解释一下我的设计需要如何改变才能适应同样的功能.