Я понимаю, что статическое наследование метода не поддерживается в С#. Я также прочитал ряд обсуждений (в том числе и здесь), в которых разработчики заявляют о необходимости этой функциональности, к которой типичный ответ "если вам нужно статическое членское наследование, есть недостаток в вашем дизайне".
ОК, учитывая, что ООП не хочет, чтобы я даже думал о статическом наследовании, я должен сделать вывод, что моя очевидная потребность в нем указывает на ошибку в моем дизайне. Но я застрял. Я бы очень признателен за помощь в разрешении этого. Вот вызов...
Я хочу создать абстрактный базовый класс (назовите его Fruit), который инкапсулирует некоторый сложный код инициализации. Этот код не может быть помещен в конструктор, поскольку некоторые из них будут полагаться на вызовы виртуальных методов.
Фрукты будут наследоваться другими конкретными классами (Apple, Orange), каждый из которых должен выставить стандартный метод factory CreateInstance() для создания и инициализации экземпляра.
Если статическое членное наследование было возможно, я бы поместил метод factory в базовый класс и использовал вызов виртуального метода для производного класса для получения типа, из которого должен быть инициализирован конкретный экземпляр. Клиентский код просто вызовет Apple.CreateInstance(), чтобы получить полностью инициализированный экземпляр Apple.
Но ясно, что это невозможно, так что кто-то может объяснить, как мой дизайн должен измениться, чтобы приспособить те же функции.