2009-07-01 15 views
12

好奇心の渦中に、全く同じ名前空間(Library1)を持つクラス(Class1)を持つ2つのアセンブリを作成しました。私はこれらの2つのアセンブリを参照する別のクライアントを作成し、Class1のインスタンスを作成しようとします。2つの.NETアセンブリで同じ名前と名前空間の型を使用します

驚くことではありませんが、曖昧な参照についてコンパイルエラーが発生します。あいまいさを避けるために使用したいアセンブリで型を明示的に指定する方法はありますか?

注:実際にはまったく起こらないことはほとんどありません。それは言語機能に関する好奇心からの単なる質問です。

答えて

10

グローバルネームスペースの外側でアセンブリの名前空間をラップするには、extern aliasを使用する必要があります。

  1. 2つのアセンブリを参照するプロジェクトで、参考文献の下にそれらのいずれかを選択し、[プロパティ]ウィンドウでglobal, Library1a、たとえば、へglobalから別名値を変更します。ここでは方法です。

  2. 他の参考文献でも同じことを行いますが、別の別名を付けてください。この例ではglobal, Library1bとしましょう。

  3. extern alias Library1a;および/またはextern alias Library1b;を、アセンブリを使用するクラスの最初の2行として挿入します。

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

1

それは実際に起こり、本当の痛みで、外部エイリアスは常に問題を解決することはできません。ここに問題の1つの例があるDuplicate Namepsacesです。

関連する問題