Das .NET Framework < 2.0 unterst��tzte lediglich eine einzelne Namespace-Hierarchie. In diese wurden die Typen der referenzierten Assemblies geladen und konnten anschlie��end verwendet werden. Dies ist allerdings eher unsch��n, wenn beispielsweise die gleiche Assembliy, allerdings in unterschiedlichen Versionen, verwendet werden muss oder eine ben��tigte Assembly zuf��llig denselben Namespace benutzt wie eine ganz andere. Mit extern aliases ist dieses Problem zu l��sen.
Gegeben sind zwei Assemblies.
Assembly a1.dll
namespace N
{
publicclass A {}
publicclass B {}
}
Assembly a2.dll
namespace N
{
publicclass B {}
publicclass C {}
}
Bei nachfolgendem Programm w��rde es nun zu einem entsprechenden Fehler gelangen:
class Test
{
N.A a; // Ok
N.B b; // Fehler
N.C c; // Ok
}
Kompilieren wir nun den Code mit folgender Anweisung:
csc /r:a1.dll /r:a2.dll test.cs
Die Typen aus den Assemblies a1.dll und a2.dll werden in der Global Namespace Hierarchy abgelegt, wodurch ein Fehler entsteht: Der Typ N.B existiert in beiden Assemblies. An dieser Stelle kommen die extern aliases zum Einsatz:
extern alias X;
extern alias Y;
class Test
{
X::N.A a;
X::N.B b1;
Y::N.B b2;
Y::N.C c;
}
Es werden die beiden Aliase X und Y deklariert, aber die Defintionen der Aliase sind extern abgelegt. Der Kompilierungsaufruf muss entsprechend abge��ndert werden und sieht so aus:
csc /r:X=a1.dll /r:Y=a2.dll test.cs
Unter Verwendung von Visual Studio k��nnen die Aliase in der Eigenschaft Aliases der jeweiligen Referenz angegeben werden.