12

好奇心からClass1、まったく同じ名前空間 ( ) を持つクラス ( ) を持つ 2 つのアセンブリを作成しましたLibrary1。次に、これら 2 つのアセンブリを参照する別のクライアントを作成し、のインスタンスを作成しようとしますClass1

当然のことながら、コンパイラはあいまいな参照に関するコンパイル エラーを表示します。あいまいさを避けるために使用したいアセンブリで型を明示的に指定する方法はありますか?

注: これが実際に起こることはめったにないことを私は知っています。言語機能についての好奇心からの質問です。

4

2 に答える 2

10

グローバル名前空間の外側でアセンブリ名前空間をラップするには、 extern エイリアスを使用する必要があると思います。方法は次のとおりです。

  1. 2 つのアセンブリを参照するプロジェクトで、[参照] の下でいずれかを選択し、[プロパティ] ウィンドウで [エイリアス] の値をglobalから、たとえば に変更しますglobal, Library1a

  2. もう一方の参照についても同じことを行いますが、別のエイリアスを指定してください。この例を使用してみましょうglobal, Library1b

  3. アセンブリを使用するクラスの最初の 2 行にextern alias Library1a;and/orを挿入します。extern alias Library1b;

  4. あいまいなメンバーにアクセスするときは、名前空間をLibrary1a.またはで修飾しますLibrary1b.。例:Library1a.Library1.Class1... Library1b.Library1.Class1...

于 2009-07-01T06:30:56.857 に答える