Pregunta

Me he encontrado con el escenario poco probable cuando hago referencia a dos ensamblajes externos que tienen el mismo espacio de nombres y nombres de tipo. Cuando trato de 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 Property de una referencia en Visual Studio 2008. ¿Cómo uso este alias en mi código? Según tengo entendido, debería estar usando el operador :: , pero falla con el siguiente error:

  

CS0432 - Alias ??no encontrado

El operador habitual . 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 podría intentar a continuación es muy apreciada.

¿Fue útil?

Solución

extern alias alias1;
using alias1::Namespace;

Otros consejos

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 el ensamblaje1 y global, asm2 para el ensamblaje2

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

Cuando hace referencia a algún ensamblado en el proyecto, tiene el alias predeterminado "global". Cuando agrega otro alias para ese ensamblaje, p. " global, AssemblyA " ;, lo referenciará así:

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

o:

void SomeMethod(AssemblyA::Company.Product.SomeType someType) { ... }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top