名前空間エイリアス演算子::をC#で動作させるには?
-
03-07-2019 - |
質問
名前空間と型名が同じである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) { ... }
所属していません StackOverflow