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