静的メソッドの継承がC#でサポートされていないことを理解しています。また、開発者がこの機能の必要性を主張する多くの議論(ここを含む)を読みました。典型的な応答は「静的なメンバーの継承が必要な場合、設計に欠陥があります」です。
OK、OOPは静的継承についても考えたくないので、それに対する私の明らかな必要性は私の設計のエラーを示していると結論付けなければなりません。しかし、私は立ち往生しています。私はこれを解決するためにいくつかの助けを本当にいただければ幸いです。これが課題です...
複雑な初期化コードをカプセル化する抽象基本クラス(Fruitと呼びましょう)を作成したいと思います。一部のコードは仮想メソッド呼び出しに依存するため、このコードをコンストラクターに配置することはできません。
Fruitは、他の具象クラス(Apple、Orange)に継承されます。各クラスは、インスタンスを作成および初期化するために、標準のファクトリメソッドCreateInstance()を公開する必要があります。
静的メンバーの継承が可能であれば、ファクトリメソッドを基本クラスに配置し、派生クラスへの仮想メソッド呼び出しを使用して、具象インスタンスを初期化する必要がある型を取得します。クライアントコードは、Apple.CreateInstance()を呼び出すだけで、完全に初期化されたAppleインスタンスを取得できます。
しかし、明らかにこれは不可能なので、同じ機能に対応するために私のデザインをどのように変更する必要があるかを誰かに説明してもらえますか。