Durante el desarrollo de un pequeño ejemplo en Visual Studio 2005, en el que participaban una ensamblado librería (DLL) y un ensamblado aplicación (EXE), me di cuenta de que existían dos clases de ambos proyectos que no sólo se llamaban igual sino que además el nombre del namespace eran idénticos.
Desde la aplicación EXE referencio la DLL, con lo que en lugar de cambiar nombres traté de instanciar la clase EXE desde globla::, pero sin embargo esto no tiene ningún sentido puesto que todas los namespaces proceden de global, con lo que el compilador me generaba un error.
La solución la encontré en los alias de los espacios de nombres. Cuando referencio la DLL, en las propiedades de referencia (reference properties) existe un propiedad, Alias, la cual implícitamente tiene valor global. Si asigno un alias determinado que distinga que se trata del espacio de nombres de la DLL el problema se soluciona. Lo único que hay que tener en cuenta es que al instanciar la clase del espacio de nombres indicado deberemos también indicar el alias.
//clase de la DLL
AliasDLL::ClasesGenericas.ClaseA a1 = new AliasDLL::ClasesGenericas.ClaseA();
//clase de la EXE
global::ClasesGenericas.ClaseA a2 = global::ClasesGenericas.ClaseA();
desarrolloMobile.NET Noticias
jueves, mayo 25, 2006
miércoles, mayo 10, 2006
Anuncio de la .NET COMPACT FRAMEWORK SP1 Beta1
Suscribirse a:
Entradas (Atom)