c# .net namespaces alias

¿Cómo hacer que el operador de alias de espacio de nombres:: funcione bajo C#?



.net namespaces (4)

Me he topado con el improbable escenario cuando hago referencia a dos conjuntos externos que tienen el mismo espacio de nombres y nombres de tipo. Cuando intento usar el tipo, el compilador arroja un error que no puede resolver cuál quiero usar.

Veo que C # ofrece un mecanismo para usar alias para referencias. Incluso puede especificar estos alias a través de la ventana de Property de una referencia en Visual Studio 2008. ¿Cómo uso este alias en mi código? Según tengo entendido, debería usar el operador :: , pero falla con el siguiente error:

CS0432 - Alias not found

Lo habitual . El operador también falla.

En la ventana de salida veo que el compilador obtiene el alias pasado correctamente en su línea de comando.

Cualquier sugerencia sobre lo que puedo intentar a continuación es muy apreciada.


Creo que necesitas usar un alias externo . Anson Horton tiene un buen blog sobre este problema y cómo usar un alias externo para solucionarlo.


Cuando hace referencia a algún ensamblaje en el proyecto, tiene un alias predeterminado "global". Cuando agregue otro alias para ese ensamblaje, por ejemplo, "global, AssemblyA", lo referenciará así:

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

o:

void SomeMethod(AssemblyA::Company.Product.SomeType someType) { ... }


Prueba esto:

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; } } }

Y agregue global,asm1 a la referencia del proyecto para assembly1 y global,asm2 para assembly2


extern alias alias1; using alias1::Namespace;