Puede escribir su propia advertencia/error con el uso del marco de Roslyn. Su DiagnosticAnalyzer
verificaría todas las llamadas de constructor para ver si su clase se está construyendo o no y si se encuentra dentro de una declaración using
o no.
El diagnóstico notificado se puede establecer en Gravedad de error y se puede marcar como no configurable, lo que significa que nadie puede degradarlo a advertencia o información.
Además, si está desarrollando una biblioteca de Nuget es posible que desee enviar su analizador como una dependencia de desarrollo y agregarlo como un paquete analizador nuget. Esto daría lugar a que todos sus usuarios se vean obligados a deshacerse de su clase determinada. Este embalaje se conoce como "code-aware library".
Tenga en cuenta que, en teoría, esto podría hacerse por una tercera biblioteca analizador de fiesta también (como FxCop), pero hay muchas implementaciones IDisposable
que no necesitan ser estrictamente dispuesto, como MemoryStream
, cuya Dispose
no hace mucho, entonces estas reglas tienen algunos mecanismos de inclusión de listas blancas o reportan falsos positivos.
¿Por qué * debe * un usuario de su clase desecharlo? Normalmente, recomendamos encarecidamente que lo desechen para liberar recursos antes. ¿Qué tiene de especial tu caso? –
Si pudiera hacer eso, el recurso solo se podría usar en el alcance del método. Sin duda, haría las cosas más fáciles, pero también limitaría el uso de manera significativa. –
@Brian Rasmussen: A veces las limitaciones pueden liberarlo para que se preocupe por cosas más importantes. – LBushkin