1

静的クラスのセットを作成する必要があり、それらすべてが同じメソッドを実装する必要があります。私はそれらを強制する方法を見つけたいと思います。

静的クラスはSystem.Object以外のものを派生させることができないことを理解しています。これには非静的メソッドを使用する必要がありますか?可能性はありますが、このクラスのどのメソッドもインスタンスプロパティを使用しません...

私のベストショットは、シングルトンを使用することです。次にインスタンスを使用しますが、少なくとも、メソッドを使用する必要があるたびにクラスをインスタンス化する必要はありません。

あなたが提案する代替案は何ですか?

編集:

これらのメソッドは実装しません。他の開発者に特定のシグネチャを使用して特定のメソッドを実装するように強制する必要があります。すべての署名は、すべてのクラスで同じです。それでおしまい。

オフィスのデータベースからレコードを取得する静的クラスがあるとします。それを行うにはいくつかの方法があります。これらのメソッドはいずれも変数を共有しないため、静的としてマークされ、クラスも静的としてマークされます。

さて、あなたとあなたのチームの他の開発者は、他のデータベースやあなたのコントロール外のAPIに対しても同じことをしなければなりません、それは問題ではありません。同僚に、同じ署名を持つまったく同じメソッドでこれらのクラスをすべて実装するように強制したいとします。

あなたのコメントはいつでも歓迎ですが、今私はこれを行うための最も近い方法を見つけたいと思っています。

他のすべてが継承する抽象クラスを使用できます。ただし、これらのメソッドは何も共有しないため、必要になるたびにクラスをインスタンス化したくないと思います。

そのため、シングルトンパターンの使用について説明しました。私はそれをすべきではありませんか?

4

1 に答える 1

0

あなたの質問を正しく読んでいれば、メソッドに大量のオーバーロードがない限り、シングルトンは機能しません。

インターフェイスや基本クラスなどについて話していますが、コードを制御している場合、必要なメソッドをすべて実装する一連のクラスを作成できない理由はありますか? もちろん、何をしたのか、なぜそれをしたのかを文書化する必要がありますが、「慣例」に固執する以外に、そうしない理由はありますか?

System.Object を超えて何も継承せず、インターフェイスを実装しない静的クラスを使用している場合、とにかくそれらを相互に呼び出すことはできません。

EDIT編集 に基づいて、コード自体を通じてコーディングポリシーであるべきものを強制しようとしているようです。すべての開発ショップには、ドキュメントからプロジェクトのレイアウト、メソッドの署名に至るまで、独自のポリシー、手順、および標準があります。私の現在のクライアントは、BizTalk との間で多くのことをやり取りするため、メソッド シグネチャに非常に厳格です。また、チームの他のメンバーが使用しているパターンに従いたくないという理由だけで、BizTalk ソリューションを変更するのは面倒です。

これらの静的クラスと静的メソッドを作成しているのがチームのメンバーである場合、ポリシーを実装してこれを行うことができなかった理由は (考えられる社内政治を超えて) わかりません。

コードでこれを行う必要がある場合は、インターフェイスとインスタンス メソッドに行き詰まっていると思います。

必要に応じて、これらのインスタンス メソッドが作成されたら、静的ヘルパー クラスをラッパーとして記述できます (そのため、個人的には毎回オブジェクトをインスタンス化する必要はありません)。

于 2010-08-04T22:21:48.283 に答える