2009-11-26 21 views
5

Tengo un problema con espacios de nombres y códigos conflictivos que el diseñador de formularios genera automáticamente en Visual Studio 2008. He buscado muchos foros y documentación diferente, pero no he podido encontrar Alguna solución a este problema.Espacios de nombres, alias y diseñador de Visual Studio Forms

tengo una asamblea llamada Foo.dll con el siguiente espacio de nombres/código:

namespace Foobar.System 
{ 
    public class MySystemClass() { } 
} 

Entonces, tengo otro conjunto que contiene som formas usadas comúnmente:

namespace Foobar.MyCommonForms 
{ 
    public class MyForm : System.Windows.Forms.Form 
    { 
     public void SomeMethod() 
     { 
      var systemclass = new Foobar.System.MySystemClass(); 
     } 
    } 
} 

Aquí, los compiladores muestra el siguiente error: Tipo o espacio de nombres 'Windows' no es parte del espacio de nombres 'Foobar.System'. Obviamente, el compilador intenta buscar la clase System.Windows.Forms.Form en el espacio de nombres Foobar.System.Windows.Forms!

He podido resolver esto usando el alias 'x' en lugar de 'global' cuando hago referencia al ensamblado Foo.dll, y declaro 'extern alias x' en mis archivos de código, y pongo 'x :: 'delante de cada referencia a tipos y clases en el espacio de nombres Foobar.System. El código compila

Pero parece que el diseñador de formularios no reconoce esto, y me da un error al intentar mostrar el formulario. Esto, una vez más, se puede resolver colocando manualmente 'global ::' frente a cada referencia a las clases en System.Windows.Forms (por ejemplo, global :: System.Windows.Forms.Button), pero cada vez que se hacen oportunidades para el formulario, el código se vuelve a generar automáticamente y se elimina la parte 'global ::'.

Entonces, la pregunta es: ¿hay alguna manera de que el diseñador de formularios tenga conocimiento del alias 'x' que se usa para hacer referencia a mi ensamblador Foo.dll, o hay otra mejor solución para esto? Cambiar el nombre del espacio de nombres Foobar.System a otra cosa es demasiado trabajo.

+0

¡Estoy experimentando este problema en VS 2010 también! –

Respuesta

0

No hay forma de evitar esto, por lo que puedo decir.

Las herramientas de refactorización populares, como Resharper o Refactor! ambos incluyen la capacidad de cambiar el nombre de un espacio de nombre globalmente. Consideraría seriamente usarlos.

Cuestiones relacionadas