klasse - c# property



Verhindern Sie, dass andere Entwickler Basismethoden innerhalb einer Klasse verwenden (4)

Ich habe eine Klasse, die Dateisystemelemente verwendet, um Daten zu manipulieren. Wir haben mehrere Methoden, die speziell dafür entwickelt wurden, einige der Probleme, mit denen wir konfrontiert sind, zu bewältigen (Dateisperrung, nicht existierende Dateien usw.). Idealerweise möchte ich eine Warnung ausgeben können, wenn ein anderer Entwickler versucht, direkt über System.IO auf das Dateisystem zuzugreifen, anstatt die Hilfsmethoden zu verwenden.

Ist das möglich? Das Verhalten, nach dem ich suche, besteht darin, Methoden wie File.ReadAllText () so zu markieren, als wären sie veraltet, aber nur innerhalb dieses Projekts (NICHT lösungsweit).

Ich habe etwas gegraben, und es sieht so aus, als wäre meine einzige Option "sag ihnen, dass sie sicher gehen sollen, dass sie deine Methoden anwenden". Ich hoffe, dass jemand mir eine andere und hilfreichere Antwort geben kann. :)

--EDIT-- Die Vorschläge einer benutzerdefinierten StyleCop- oder FxCop-Regel sind gut, aber in diesem Szenario leider nicht praktikabel (nicht jeder Entwickler in der Abteilung verwendet diese ausgezeichneten Tools), und die legitimen Methoden, die den Dateizugriff ausführen, verwenden System.IO . Das Hinzufügen von "ignore" -Attributen zu den legitimen Methoden ist ebenfalls eine gefährliche Idee. Wenn jemand sieht, wie ich meine eigene Regel "gebrochen" habe, werden sie das Attribut wahrscheinlich auf ihre eigene Methode kopieren.

https://ffff65535.com


Hmm. Ich probiere das nicht selbst aus, aber wie wäre es, wenn Sie Leute zwingen würden, Ihre eigenen Dateibehandlungsklassen zu verwenden, indem Sie einen Namespace-Alias ​​verwenden, der das echte System.IO "versteckt". Wenn ich mich recht erinnere, werden diese auf Projektebene angewendet.


Ich bin mir nicht sicher, ob einer dieser Vorschläge gültig ist, wie ich es noch nie getan habe, aber es gibt einige Denkanstöße:

Ist das nicht das, wofür "Enterprise Templates" gedacht sind? Ermöglichen sie Ihnen nicht, eine Richtliniendatei zu erstellen, die die zulässigen Projektreferenzen einschränkt?

Alternativ, obwohl nicht idiotensicher, könnten Sie dem Projekt ein Pre-Build-Ereignis hinzufügen, das eine Warnung auslöst, wenn auf System.IO verwiesen wird?


Sie können eine benutzerdefinierte Analyse-Regel für FxCop / Visual Studio Code Analysis schreiben und diese als Teil Ihres automatisierten Builds ausführen.


Verwenden Sie ein statisches Analysetool (z. B. StyleCop oder FxCop ) mit einer Regel , die " System.IO direkt verwenden" erfasst. Dann integrieren Sie es als Teil Ihres automatisierten Build-Prozesses und System.IO , wenn jemand versucht, System.IO direkt zu verwenden. Niemand mag es, den Build zu brechen.





obsolete