2012-06-26 22 views
16

私のアプリケーション(第三者)に2つのdllをインポートしました 両方とも同じ名前の名前空間を持っています。 たとえば、A.B とその両方に同じ名前のクラスが再度存在します。 これらのうちの1つのインスタンスを作成しますが、名前空間とクラス名が同じであるため、コンパイラはあいまいになります。 その場所で使用されている魔法使いのDLLをどのように指定できますか?2つのDLLの名前空間名を持つあいまいなクラス

+1

答えは、その後の仕事をdoesntの下にあなたはねじ込みしている場合:) – swapneel

+0

は幸いにもそのうちの一つは、これは私が持っていた問題に類似していたが、私の場合には、それがあった –

答えて

30

あなたは、両方が同じ名前空間で同じクラスを定義することを2つのアセンブリ(ClassLibrary1.dllClassLibrary2.dll)があるとしましょう:あなたはの参考文献に追加エイリアスを定義することができ消費するプロジェクトで、今

namespace Foo 
{ 
    public class Bar 
    { 
    } 
} 

をクラスライブラリ:

enter image description here

そして今、あなたはコンパイラ明確にするために、次の操作を行うことができます:

extern alias lib1; 
extern alias lib2; 

class Program 
{ 
    static void Main() 
    { 
     var barFromLib1 = new lib1::Foo.Bar(); 
     var barFromLib2 = new lib2::Foo.Bar(); 
    } 
} 
+0

:-)働く私自身のコード(小さなヘルパークラス) EXEで使用されていた2つの異なるDLLで使用する必要がありました。 Darinのソリューションはすごくうまくいった!ありがとう。 –

-1

多少の改良または拡張された情報:複数の使用法がある場合は、「extern alias lib1;」行がそれらの使用法の最初のものでなければなりません(しかし、MS VSからもそのことが通知されます)。

+0

あなたの答えは質問への答えを提供しません。慎重に質問を読んでください –

関連する問題