Debe comprender que, en el contexto del CLR, no existe el espacio de nombres. Los espacios de nombres son puramente una función de idioma que existe solo para simplificar el código, por lo que no siempre debemos leer nombres de clases totalmente calificados.
En su ejemplo,
namespace foo
{
public class bar { ... }
}
namespace foo.bar
{
public class baz : EventArgs { ... }
}
cuando se compila el código fuente, la IL ni siquiera es consciente de que hay dos espacios de nombres - foo y foo.bar. En cambio, solo conoce las definiciones de clase. En este caso, cuando se trata a través de la barra de la clase, que sabe que usted tiene una clase llamada foo.bar
Cuando se trata a través de la baz clase, resuelve el nombre completo de la clase como foo.bar. baz
Pero si este fuera el caso, baz debería haberse declarado legítimamente dentro de la definición de clase de barra y no en un espacio de nombres separado como lo ha hecho aquí.
Sin un ejemplo práctico, las sugerencias tendrán que hacer conjeturas, cubrir todas las bases potenciales, o no ser una gran respuesta; por regla general, un espacio de nombres es una categoría, o generalización, y una clase una utilidad específica: el nombramiento debe reflejar esto. Por ejemplo, el espacio de nombres 'System.Collections' y las clases, como' System.Collections.CollectionBase'. Si había un requisito para una clase llamada 'Colecciones 'en este espacio de nombres, entonces algo más está mal. –
Es más o menos un ejemplo práctico. Quiero usar un tipo personalizado basado en 'EventArgs', en la clase' bar'. ¿Debería poner el tipo personalizado en el mismo espacio de nombres como 'barra'? – Stijn