2012-10-18 10 views
16

Was ist der beste Weg zu verhindern, dass der C# -Programmierer bestimmte Bibliotheksklassen verwendet?Obsolete Bibliotheksklasse

Die Klasse stammt von einer externen Baugruppe, daher ist es unmöglich, das Attribut [Obsolete] darauf zu verwenden. Ich habe versucht, benutzerdefinierte Resharper-Muster zu verwenden, aber es scheint keine generischen Typen zu unterstützen.

+8

Entfernen Sie es vollständig? –

+0

In der Bibliothek gibt es nur wenige andere Klassen, die im Projekt verwendet werden. Die Bibliothek ist ein Drittanbieter. –

+0

Oh, hast du nicht den Code für die Bibliothek? –

Antwort

2

Patchen Sie die Bibliotheksmethode/Klasse (es gibt mehrere Plugins für Reflector) - fügen Sie DeprecatedAttribute hinzu, oder ändern Sie den Code, um beispielsweise eine Ausnahme auszulösen.

Sie können auch einen speziellen Komponententest durchführen, der auf dem CI-Server ausgeführt wird und fehlschlägt, wenn eine bestimmte veraltete Elementverwendung angezeigt wird.

+0

Ich denke, Sie wollten "Code Analysis" statt Unit-Test sagen. Komponententests dienen der Funktionalität, während die Codeanalyse Regeln für den Code selbst erzwingt. Dies ist eine Instanz, in der möglicherweise eine benutzerdefinierte Codeanalyse-Regel nützlich sein könnte. –

1

Sie können die Bibliothek mit ildasm zerlegen, [Obsolete(true)] Attribute hinzufügen und mit ilasm wieder zusammenbauen.

Sie können möglicherweise einige Assembly bearbeiten, wie Reflexil zusammen mit einem Test von Reflektor.

Beachten Sie, dass, wenn Sie eine Assembly bearbeiten, Sie alle Signaturen und ähnliches verlieren.

Verwandte Themen