29

共通のライブラリ構造を作成しようとしています。私はこれを、必要なすべての共通ライブラリに対して個別のプロジェクトを作成することによって行っています。

私は次の2つの名前空間を持っています:MyCompany.ERPMyCompany.Barcode

両方のクラスに名前Utilitiesを付けて静的にする必要があります。その場合、静的クラスにアクセスするには、静的クラスの前に完全な名前空間名を指定する必要があります。

それを行うための他の好ましい方法はありますか?

BarcodeUtilsまたは、やのようなクラスで別の名前を付ける必要がありERPUtilsますか?

4

8 に答える 8

51

それを行うと、アクセスするために静的クラスの前に完全な名前空間を指定する必要がありますか?

いいえ、その必要はありませんが、詳細はこれらの型を使用するクラスとそのusing宣言によって異なります。

クラス内の名前空間の1 つだけを使用する場合、あいまいさはなく、先に進んでその型を使用できます。

両方の名前空間を使用する場合は、使用法を完全に修飾するか、名前空間/型エイリアスを使用して型を明確にする必要があります。

using ERPUtils = MyCompany.ERP.Utilities;
using BCUtils = MyCompany.Barcode.Utilities;

public void MyMethod()
{
  var a = ERPUtils.Method();
  var b = BCUtils.Method();
}
于 2012-11-12T14:03:02.293 に答える
22

他に方法はありません。usingディレクティブでエイリアスを作成できます。

using MC=MyCompany.ERP;
using MB=MyCompany.Barcode;
...
public void Test()
{
  var a = MC.Utilities.Method();
  var b = MB.Utilities.Method();
}

それはそれらを管理する最も簡単な方法です。

于 2012-11-12T14:05:05.410 に答える
12

MS ガイドラインには、次のように記載されています。

Element、Node、Log、Message などの一般的な型名を導入しないでください。一般的なシナリオでは、型名の競合が発生する可能性が非常に高くなります。

単一のアプリケーション モデル内の名前空間の型に同じ名前を付けないでください。

BarcodeUtilities代わりにandを使用するのがおそらく良い考えであることに同意しますErpUtilities。(ユーティリティ クラスがクライアント コードで使用されることを意図していない場合を除きます。その場合は、それらUtilitiesに名前を付けて作成することができますinternal。)

于 2012-11-12T14:34:32.263 に答える
8

「ユーティリティ」はあまりにも一般的すぎるため、クラスの名前としてはあまり適していません。したがって、両方の名前をより有益なものに変更する必要があると思います。

于 2012-11-12T14:06:32.857 に答える
4

エイリアスを使用できます。

using BarcodeUtils  =  MyCompany.Barcode.Utilities;

あなたが衝突しているページに。ただし、これが多くの場所で発生している場合は、理想的には名前を変更してください。

于 2012-11-12T14:03:02.410 に答える
1

別のクラス名を使用することをお勧めします。本当に両方のユーティリティを呼び出したい場合は、usingディレクティブでエイリアス機能を使用できます。

using ERP = MyCompany.ERP;
using Barcode = MyCompany.Barcode;

...
    ERP.Utilities.SomeMethod();
    Barcode.Utilities.SomeMethod();
于 2012-11-12T14:04:49.083 に答える
0

両方の名前が同じ場合は、フルパスを使用する必要があります。そうしないと、あいまいな参照エラーが発生します。

エイリアスを使用することもできますが、入力を節約できます。

using Project = PC.MyCompany.Project;

もう少しわかりやすい別の名前を選びます。A

于 2012-11-12T14:03:02.843 に答える
0

実際には、クラスの目的によって異なります。Barcode.Utilities と ERP.Utilies を別々に配布する場合は、このままの方がよいでしょう。一方、同じクラスでのみ使用する場合は、コードを簡単にするために 2. メソッドを使用できます。

于 2012-11-12T14:06:39.817 に答える