C#には多重継承がないこと、それも必要ないこと、そしてそれがあまりにも多くの問題を引き起こすことを説明する質問/回答を読みました。
現在、私は、コードを複製せずに、多重継承なしで物事を行う方法を本当に理解していないプロジェクトに取り組んでいます。
これが状況です。ホームページとマスターページから継承する他のページがあるWebサイトがあります(ホームページは継承しません)。ページとマスターページの両方が、カスタムログイン、統計、カスタマイズのためのユーザー設定の読み込みなど、いくつかのことを実行しています。これらのタスクのソースコードは2回コピーされるだけなので、現時点では解決策はお粗末です。
ホームページクラスはから継承しPage
ます。一方、マスターページはから継承しMasterpage
ます。論理的には、共通クラスから継承するのもいいのですが、多重継承なので不可能です。
では、代わりに何をすべきでしょうか?
私はいくつかの方法を考えましたが、それらを嫌います:
ページ/マスターページクラスから呼び出されるスタンドアロンクラスを作成します。したがって、たとえば、を書く代わりに
bool isDisplayingTips = this.CurrentUser.IsDisplayingTips
、を書きbool isDisplayingTips = this.SharedObjects.CurrentUser.IsDisplayingTips
ます。書くのが長いので、私はそれが好きではありません。「実際の」空の共通マスターページを作成し、ホームページとマスターページの両方をそこから継承します。マスターページパラメータにアクセスするためにより多くのコードを記述する必要があるだけでなく、処理が遅くなり、リクエストごとに追加のマスターページが必要になります。
何か案が?