tag sobreescritos metodos c# attributes obsolete

tag - metodos sobreescritos c#



Evitar que otros desarrolladores usen métodos base dentro de una clase (5)

¿Puedes agregar alguna funcionalidad personalizada a un enlace de confirmación de control de origen? No encontrará violaciones existentes (si las hay) a menos que esos archivos se cambien pero deberían detectar nuevos usos.

¿Ningún bien?

Tengo una clase que usa entidades de sistema de archivos para manipular datos. Tenemos varios métodos diseñados específicamente para (intentar) hacer frente a algunos de los problemas que enfrentamos con este enfoque (bloqueo de archivos, archivos inexistentes, etc.). Idealmente, me gustaría poder emitir una advertencia si otro desarrollador intenta acceder al sistema de archivos directamente a través de System.IO en lugar de utilizar los métodos de ayuda.

es posible? El comportamiento que estoy buscando es marcar eficazmente métodos como File.ReadAllText () como si estuvieran obsoletos, pero solo dentro de este proyecto (NO a nivel de toda la solución).

He investigado un poco, y parece que mi única opción es "decirles que se aseguren de que usen sus métodos". Espero que alguien me pueda dar una respuesta diferente y más útil. :)

--EDIT-- Las sugerencias de una regla personalizada de StyleCop o FxCop son buenas, pero desafortunadamente poco prácticas en este escenario (no todos los desarrolladores en el departamento usan estas excelentes herramientas), y los métodos legítimos que usan el acceso a archivos usan System.IO . Agregar atributos de "ignorar" a los métodos de fiar también es una idea peligrosa. Si alguien ve cómo he "roto" mi propia regla, es probable que copie el atributo a su propio método.


Hmm. No intenté esto por mí mismo, pero ¿qué tal si forzo a las personas a usar sus clases de manejo de archivos personalizadas, al usar un alias de espacio de nombres que "oculta" el System.IO genuino. Si mal no recuerdo, estos se aplican a nivel de proyecto.


No estoy seguro de si alguna de estas sugerencias es válida, ya que nunca las hice, sino algo de reflexión:

¿No es esto para lo que están diseñadas las "Plantillas Enterprise"? ¿No le permiten crear un archivo de política que restrinja las referencias de proyecto permitidas?

Alternativamente, aunque no es infalible, ¿podría agregar un evento de preconstrucción al proyecto que arroje una advertencia si se hace referencia a System.IO?



Use una herramienta de análisis estático (como StyleCop o FxCop ) con una regla que capture "No use System.IO directamente". Luego integrelo como parte de su proceso de compilación automatizado y vomite si alguien intenta usar System.IO directamente. A nadie le gusta romper la construcción.