『究極のC#プログラミング』 Chapter10 名前空間のエイリアス修飾子と外部アセンブリ

usingエイリアスで別名を定義できる

using A = NamespaceA; // エイリアスの定義


このやり方には問題点が1つある。
エイリアス名と同名の名前空間を定義した時に、コード破壊を起こす可能性があるのだ。


それを防ぐには、エイリアス修飾子を使う。例えば、エイリアス名Aと名前空間Aが共在している時、

A::ClassA.SayHello();

のように呼び出すことで、エイリアス名のほうのAを指定できる。


名前空間がうまく解決しない時は、グローバルな名前空間をglobal::によって指定する。

global::A.B.SayHello();


複数のアセンブリ(クラスライブラリなど)を参照している時には、全く完全名が同じ名前が存在してしまうことがある。
そういう時は、externエイリアスを使う。
まず、参照するアセンブリエイリアスプロパティを、既定値のglobalから適切な名前に書き換える。ここではLib1, Lib2とする。
そして、

extern alias Lib1;
extern alias Lib2;

ソースコードに記述する。
こうすれば、

Lib1::A.B.SayHello();
Lib2::A.B.SayHello();

のように完全名が同じものを区別して指定することができる。