3

これは、前の質問のフォローアップです。「ユーティリティ」が異なるアーキテクチャ間でエラーを発生させないようにします。次のようなクラスライブラリを作成しようとしているとします。

- Class Utility (Parent class)
     ... Utility functions and methods
         (EG: Public Sub Sub1() )

  - Class Utility_Web
       ... Functions and methods only related to Web / Web-Controls
         (EG: Public Sub Web_Sub1() )

  - Class Utility_WinForms
       ... Functions and methods only related to Winforms / WinForm-Controls
         (EG: Public Sub WinForm_Sub1() )

さて、私がやりたいUtilityのは、プロジェクトへの参照としてdllを追加するだけで、たとえば次のように入力するだけで、これら3つのクラスすべての関数とメソッドにアクセスできるようにすることです。

Utility.Sub1
Utility.WebSub1
Utility.WinFormSub1

言い換えれば、入力する必要はありません

Utility.Utility_Web.Websub1

そして、エンドプログラマーがこのユーティリティの内部構造を知る必要がないようにすることで、Utility.命名法だけですべてのメソッド/関数を参照できます。

どうすればいいですか?これはどこでNameSpaces発効しますか?InheritancePartial ClassesModulesクラスではなく?

4

3 に答える 3

5

同じクラス名を使用してアクセスする場合、これらのメソッドが別々のクラスにある理由はないようです。

組織的な目的でコードを多くのソースファイルに分割する場合は、部分クラスを使用できます。

于 2013-01-22T16:32:58.380 に答える
2

これは、すべて同じユーティリティ名前空間を使用する部分クラスを使用する場合の優れたインスタンスのようです。これにより、Utility.WebSub1を使用してメソッドにアクセスし、ステップを減らすことができます。

于 2013-01-22T16:35:19.173 に答える
1

名前の付いたUtilityクラスは最初から悪いクラスです。その有用性は何ですか?それはあなたに何を助けますか?クラスにUtilityという名前を付ける人は他に何人いますか?

クラスにその機能の名前を付け、論理的および機能的に意味のある名前空間に関連付けます。

を表すクラスを支援する一連の静的メソッドを作成しているとしましょうMonth。メソッドを入れてみませんMonthか?データをある表現から別の表現に変換するメソッドを作成している場合は、そのように名前を付けます(つまり、MonthDataTranslation)。

クライアント側やクライアントコードの入力について心配する必要はありません。IntellisenseとC#usingステートメントは、それを大幅に軽減し、名前の悪い、あいまいなUtilityクラスと、名前の長い長いクラスのどちらかを選択できるので、毎回後者を選択します。

于 2013-01-22T16:43:33.433 に答える