Immaginate di avere una console application che ha un riferimento ad un assembly Lib1 che contiene questo codice:
using System;
namespace Utility
{
public class Version
{
public int GetVersion(){return 1;}
}
}
A questo punto la naturale evoluzione dell'applicazione richiede che impostiate un riferimento ad una nuova assembly Lib2 di terze parti la quale contiene "anche" questo codice:
using System;
namespace Utility
{
public class Version
{
public int GetVersion(){return 2;}
}
}
La presenza in C#2.0 degli external alias ci consente di discriminare il metodo GetVersion in Lib2 da quello in Lib1 semplicemente selezionando il riferimento in Visual Studio 2005 e assegnando un nostro alias attraverso la proprietà Aliases presente nella proprietà dello stesso.
Supponendo di assegnare come alias rispettivamente V1 e V2 quello che dobbiamo scrivere ora è:
extern alias V1;
extern alias V2;
using System;
namespace Test
{
class Program
{
static void Main(string[] args)
{
V1::Utility.Version v1 = new V1::Utility.Version();
int ret1 = v1.GetVersion(); //1
V2::Utility.Version v2 = new V2::Utility.Version();
int ret2 = v2.GetVersion(); //2
}
}
}
Questa feature non è disponibile in VB 2005...