質問

名前空間と型名が同じである2つの外部アセンブリを参照すると、思いがけないシナリオに遭遇しました。型を使用しようとすると、コンパイラは、使用するものを解決できないというエラーをスローします。

C#は、参照にエイリアスを使用するメカニズムを提供していると思います。 Visual Studio 2008の参照の Property ウィンドウからこれらのエイリアスを指定することもできます。このエイリアスをコードで使用するにはどうすればよいですか?理解できるように、 :: 演算子を使用する必要がありますが、次のエラーで失敗します:

  

CS0432-エイリアスが見つかりません

通常の演算子も失敗します。

出力ウィンドウで、コンパイラがコマンドラインで正しく渡されたエイリアスを取得していることがわかります。

次に試すことができるものについてのポインタは大歓迎です。

役に立ちましたか?

解決

extern alias alias1;
using alias1::Namespace;

他のヒント

これを試してください:

extern alias asm1;
extern alias asm2;

namespace Client
{
    class Program
    {
        static void Main(string[] args)
        {
            asm1.MyNs.MyClass mc1 = null;
            asm2.MyNs.MyClass mc2 = null;
        }
    }
}

そして、 global、asm1 をassembly1のプロジェクト参照に追加し、 global、asm2 をassembly2に追加します

外部エイリアスを使用する必要があると思います。 Anson Horton には、この問題に関する優れたブログがあり、 外部エイリアスを使用して修正する方法。

プロジェクトでアセンブリを参照すると、デフォルトのエイリアス「quot; global」があります。そのアセンブリに別のエイリアスを追加すると、たとえば" global、AssemblyA&quot ;、次のように参照します:

using SomeTypeAlias = AssemblyA::Company.Product.SomeType;

または:

void SomeMethod(AssemblyA::Company.Product.SomeType someType) { ... }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top