2012-03-05 8 views
7

No estoy seguro de cómo formular esta pregunta, pero aquí está el problema.¿Es posible revertir alias un espacio de nombres C#?

tengo un espacio de nombres diseñado: my.foo.bar

En una de mis clases, accidentalmente llamado el espacio de nombres my.foo.Bar

quiero fijar la capitalización de espacio de nombres para que todos estén en la misma página, pero esto es una biblioteca compartida, y no puedo permitirme recompilar todos los programas que usan esto.

Entonces, ¿hay algo que pueda crear que, en esencia, redirija my.foo.Bar a my.foo.bar?

+0

Use VB.NET para acceder a su biblioteca; no distingue entre mayúsculas y minúsculas. ;-) (vale, es broma) – Heinzi

Respuesta

7

No a nivel mundial. Puede usar namespace aliases, pero solo en el código del cliente. Parece que deberías tomar un cambio radical.

Una forma de hacerlo, si se trata de sólo una o dos clases, habría que copiar de my.foo.Bar a my.foo.bar, despreciar los de la mala espacio de nombres utilizando el Obsolete attribute, y lentamente mover clientes a los correctos.

Si la clase no tiene estado, entonces la clase en el espacio de nombres my.foo.Bar podría delegar en el que está en el espacio de nombres que my.foo.bar @JohnSaunders sugiere, pero sólo si el uso del cliente de esa clase no se opone a la delegación (todo es un método o una propiedad, el Tipo de esa clase no se usa por reflexión, etc.).

+0

+1 para el atributo Obsoleto. – Heinzi

+0

En este caso, es una clase pequeña, 4 propiedades y 3 constructores sobrecargados. – IronicMuffin

6

Lo mejor que puede hacer es tomar todos los tipos en el espacio de nombre mal nombrado y crear versiones de ellos en el espacio de nombre correcto. Estos pueden delegar en las malas versiones del espacio de nombres.

+1

Quizás 'usando myBar = my.foo.Bar'. La restricción 'biblioteca compartida no modificable' restringe en gran medida las opciones. – Steve

+0

@John ¿Cómo podría hacer eso? ¿Heredar de la clase en el espacio de nombres mal nombrado? ¿Es eso lo suficientemente bueno? – IronicMuffin

+0

Uso ReSharper, así que simplemente le digo que cree miembros de delegación. –

Cuestiones relacionadas