Ho una classe che utilizza le entità del filesystem per manipolare i dati. Abbiamo diversi metodi specificamente progettati per (tentare di) affrontare alcuni dei problemi che affrontiamo con questo approccio (blocco dei file, file inesistenti, ecc.). Idealmente mi piacerebbe essere in grado di emettere un avviso se un altro sviluppatore tenta di accedere al filesystem direttamente tramite System.IO piuttosto che utilizzare i metodi helper.Impedire ad altri sviluppatori di utilizzare metodi di base all'interno di una classe
È possibile? Il comportamento che sto cercando è quello di contrassegnare efficacemente metodi come File.ReadAllText() come se fossero obsoleti, ma solo all'interno di questo progetto (NON a livello di soluzione).
Ho fatto qualche ricerca, e sembra che la mia unica opzione sia "dì loro di assicurarti che usino i tuoi metodi". Spero che qualcuno possa darmi una risposta diversa e più utile. :)
--EDIT-- I suggerimenti di una regola StyleCop o FxCop personalizzata sono buoni, ma sfortunatamente poco pratici in questo scenario (non tutti gli sviluppatori del reparto utilizzano questi strumenti eccellenti) e i metodi legittimi che eseguono il comando. accesso file do utilizzare System.IO. Aggiungere gli attributi "ignora" ai metodi legit è anche un'idea pericolosa. Se qualcuno vede come ho "rotto" la mia regola, probabilmente copierà l'attributo nel proprio metodo.
Fake it. Per poter usare System.IO, devi * fare riferimento * a prima, in un 'using' o direttamente. Quindi tutto ciò che devi fare durante una revisione del codice è un "Trova in tutti i file" per 'System.IO'. –
Come ripensamento, potresti probabilmente avvelenare lo spazio dei nomi introducendo intenzionalmente dei conflitti, ma questo sembra essere molto più difficile di quello che vale. –
Un'idea interessante, ma i metodi "autorizzati" devono anche utilizzare System.IO. Trovare usi illegittimi all'interno della base di codice potrebbe essere complicato. – ZombieSheep