2009-11-26 19 views
5

Estoy diseñando un espacio de nombres para contener un conjunto de clases que manejarán tareas relacionadas con el usuario para varias aplicaciones diferentes. (Registro, autenticar etc)¿Debe una clase tener el mismo nombre que el espacio de nombres?

El problema es el espacio de nombres se llamará Fusion.User pero entonces se requiere una clase en ese espacio de nombres que tenga sentido para llamar User.

¿Debería tener una clase con el mismo nombre que el espacio de nombres? ¿O estoy tomando el enfoque equivocado aquí?

+0

posible duplicado de [Cómo evitar tener el mismo nombre para una clase y es espacio de nombres, tales como Technology.Technology?](http://stackoverflow.com/questions/1158092/ how-to-avoid-having-the-same-name-for-a-class-and-its-namespace-such-as-techno) – nawfal

Respuesta

1

Tener una clase nombrada de la misma manera que el espacio de nombre (paquete) puede llevar a pensar que la clase es fundamental para el paquete. Pero si lo obtengo correctamente, el Usuario es solo un objeto de datos en su caso.

Por lo que veo que tiene 2 opciones:

  1. nombre del espacio de su nombre de manera diferente por ejemplo, Fusion.Security
  2. Use el sufijo para el nombre de clase que indique su propósito, p. UserDTO, etc. UserAction
+0

Me gusta la sugerencia 'Fusion.Security' - tal vez mi pensamiento era demasiado estrecho –

0

Probablemente llamaría al espacio de nombre 'usertasks' para evitar confusiones. Vas a tener que calificar la clase interna usando el espacio de nombres regularmente para evitar confundir el compilador.

1

El espacio de nombres es Fusion.User
Clase Nombre completo sería Fusion.User.User

Es una buena práctica para mantenerlos diferente porque

  1. Evita confusiones para el desarrollador
  2. También se ve feo en algunos casos como aquí estamos usando dos usuarios.

    usando Fusion; xyz
    espacio de nombres {
    prueba public class {

    User.User UserObject {get; set;}}

    }
    Así que la mejor opción sería utilizar diferentes nombres

1

hay casos en que utilizando el el mismo nombre causará problemas. Uno que salta inmediatamente a la mente es cuando consume un servicio WCF. Cuando hice esto recientemente en una clase llamada "someBehaviour" en el espacio de nombres "companyName.someBehaviour" para consumir "MyService", el compilador me reprochó diciendo que MyService no existía dentro del espacio de nombres someBehaviour. Cambiar el nombre de clase a algo diferente (y mucho más útil) resolvió el problema y me permitió compilar el ensamblado.

Cuestiones relacionadas