Agregando al espacio de nombres del sistema en C #

7

¿Sería aceptable que algunas utilidades o clases muy genéricas se agreguen en el espacio de nombres System ?

Estoy pensando en cosas realmente básicas como un EventArgs genérico ( EventArgs<T> ),

Caso de uso: se compartiría en la biblioteca central de una empresa (de modo que se pueda volver a compilar en un nuevo proyecto como está, sin cambiar el espacio de nombres);     

pregunta MPelletier 12.03.2011 - 05:09

6 respuestas

23

No es aceptable.

¿Podrías? Sí, pero el espacio de nombres del sistema es para cosas de la base del marco. Incluso Microsoft no pone sus propias cosas en el espacio de nombres del sistema (por ejemplo, como API del compilador de C # o Registro ).

El espacio de nombres del sistema se comparte entre Microsoft .NET , Mono , y DotGNU .

Recomendaría usar el nombre de tu empresa y luego poner las cosas básicas en ese espacio de nombres.

    
respondido por el earlNameless 12.03.2011 - 05:12
20

No, no, no. ¿Qué harías si la próxima versión de .NET contenga una clase con el mismo nombre? Estás atornillado, ya que tendrías que revisar todos tus archivos que incluyen esa clase y renombrar todas las instancias. Nunca agregas a una biblioteca a la que no tienes control. La solución más fácil es revertir la URL de la empresa. Por ejemplo, si el sitio de su empresa es fred.com, cree sus clases en com.fred. Es bastante común seguir esta convención de nombres.

    
respondido por el SnoopDougieDoug 12.03.2011 - 19:16
5

Microsoft ha creado un conjunto de directrices para las convenciones de espacio de nombres.

Este enlace está aquí: Pautas para el nombre del espacio de nombres de Microsoft .

    
respondido por el Dal 12.03.2011 - 11:34
4

Respuestas totalmente correctas aquí, pero ninguna regla sin excepción: si crea algo como LinqBridge (que es un Reemplazo de .NET framework 2.0 para las clases .NET fw 3.5 de una manera 100% compatible), entonces el uso del espacio de nombres System es obligatorio. O para responder a esto de una manera más general: el uso propio del espacio de nombres System es solo una buena idea si tiene que portar algunas clases de marco de versión superior a una versión inferior, porque no puede actualizar su versión de producción al marco superior ( y supongo que este es el único motivo válido para usar este espacio de nombres).

    
respondido por el Doc Brown 18.03.2014 - 08:29
0

Sí, puedes hacerlo. VS puede reportar varios errores falsos, como clases que no encuentra pero cuando se compila todo funcionará bien. Generalmente NO se recomienda por razones ya mencionadas, PERO, creo que puede hacerlo en algunas situaciones.

En mi caso, lo hice para una base de código compartida que se compila como bibliotecas para 6 plataformas diferentes basadas en .net (.NET basic, Xamarin, Window 8.1, Mac, etc., cada api tiene sus propias pequeñas diferencias). El lib compilado es utilizado por proyectos dirigidos a cada plataforma. Para las aplicaciones Windows Store 8.1 y las plataformas Windows Phone 8.1, las colecciones System.Collections carecían de un montón de clases: ArrayList, Hashtable, SortedList, etc., todo tipo de comparadores, enumerables, etc. Aunque soy consciente del hecho de que estos no se recomiendan las clases y se deben usar alternativas genéricas (que están disponibles para las plataformas Win 8.1), en nuestro caso es una tarea ENORME realizar dichos cambios en el código compartido, MÁS en el código de los proyectos de los consumidores de las bibliotecas resultantes . Las clases no genéricas se utilizan en todas partes, el desarrollo comenzó en 2002. Y ahora estamos hablando de decenas de miles de líneas de código ... Entonces, en este caso, creo que está bien inyectar algunas clases faltantes en el espacio de nombres del sistema.

    
respondido por el Radu Simionescu 11.09.2014 - 15:15
0

Muchas respuestas correctas ya. Pero quiero añadir otra perspectiva:

El uso del espacio de nombres del sistema le dice al desarrollador que busque en MSDN, el uso del espacio de nombres de la compañía le dice al desarrollador que busque recursos internos para la documentación.

También hace que la dependencia de la biblioteca de la compañía sea clara, lo que podría ser relevante al mover el código entre diferentes módulos.

    
respondido por el johannes 11.09.2014 - 18:22

Lea otras preguntas en las etiquetas