20

アプリケーション (サード パーティ) に 2 つの dll をインポートしましたが、両方とも同じ名前の名前空間を持っています。たとえば、AB の両方に同じ名前のクラスがあります。そのうちの 1 つのインスタンスを作成したいのですが、名前空間とクラス名が同じであるため、コンパイラがあいまいになります。その場所で使用されているウィッチ dll を指定するにはどうすればよいですか?

4

2 に答える 2

35

同じ名前空間で同じクラスを定義する2 つのアセンブリ (ClassLibrary1.dllおよび) があるとします。ClassLibrary2.dll

namespace Foo
{
    public class Bar
    {
    }
}

消費するプロジェクトでは、クラス ライブラリの参照で追加のエイリアスを定義できます。

ここに画像の説明を入力

そして、コンパイラが曖昧さをなくすために次のことを行うことができます。

extern alias lib1;
extern alias lib2;

class Program
{
    static void Main()
    {
        var barFromLib1 = new lib1::Foo.Bar();
        var barFromLib2 = new lib2::Foo.Bar();
    }
}
于 2012-06-26T09:10:55.567 に答える
-1

ほんの少しの改善または強化された情報: 複数の using がある場合、"extern alias lib1;" 行はそれらの using の最初の行でなければなりません (ただし、MS VS からも通知されます)。

于 2017-07-19T10:08:39.717 に答える