2010-03-19 8 views
6

Wir liefern eine Anzahl von Baugruppen an externe Kunden, aber nicht alle öffentlichen APIs werden offiziell unterstützt. Zum Beispiel kann aufgrund von nicht optimaler Designauswahl ein Typ öffentlich von einer Assembly verfügbar gemacht werden, damit der Rest unseres Codes funktioniert, aber wir möchten nicht, dass Kunden diesen Typ verwenden. Ein Teil der Kommunikation der fehlenden Unterstützung ist keine IntelliSense in Form von XML-Kommentaren.XML-Code-Kommentare in C# selektiv unterdrücken?

Gibt es eine Möglichkeit, XML-Kommentare selektiv zu unterdrücken? Ich suche nach etwas anderem, als Warnung 1591 zu ignorieren, da es ein langfristiges Wartungsproblem ist.

Beispiel: Ich habe eine Assembly mit öffentlichen Klassen A und B. A wird offiziell unterstützt und sollte XML-Dokumentation haben. B ist nicht für den externen Gebrauch bestimmt und sollte nicht dokumentiert werden. Ich könnte die XML-Dokumentation aktivieren und dann die Warnung 1591 unterdrücken. Aber wenn ich später die offiziell unterstützte Klasse C hinzufüge, möchte ich, dass der Compiler mir sagt, dass ich es vermasselt habe und die XML-Dokumentation nicht hinzufügen konnte. Dies würde nicht eintreten, wenn ich 1591 auf Projektebene unterdrückt hätte. Ich nehme an, ich könnte über den gesamten Unterricht hinweg Pragma schreiben, aber es scheint, als sollte es einen besseren Weg geben, dies zu tun.

Antwort

3

Wie wäre es mit Intellisense überhaupt?

///<summary>A documentation</summary> 
public class A { } 

///<summary>B documentation. This class is not supported...</summary> 
[EditorBrowsable(EditorBrowsableState.Advanced)] 
public class B { } 

///<summary>C documentation</summary> 
public class C { } 

Auf diese Weise können Sie immer noch nicht unterstützte Klassen dokumentieren (interne Benutzer sind auch wichtig!) Und haben die externen Benutzer sie nicht auf Intellisense sehen. Intern können Sie Visual Studio aktivieren, um diese erweiterten Konstrukte zu "sehen". Die Seite für die EditorBrowsableAttribute sagt uns, wie:

In Visual C# können Sie steuern, wenn die erweiterten Eigenschaften in IntelliSense und Eigenschaftenfenster mit dem ausblenden Erweiterte Benutzereinstellung unter Extras erscheinen | Optionen | Texteditor | C#. Der entsprechende EditorBrowsState ist Advanced.

5

Machen Sie solche Methoden internal und fügen Sie das Attribut [assembly: InternalsVisibleTo("AssemblyName")] der Baugruppe hinzu, die sie aussetzt.

+0

Leider habe ich es mit einer großen Menge an Code zu tun, so ist dies nicht praktikabel. –

+3

@Mike Post Wenn Sie Ihre öffentliche API von Ihrer privaten API getrennt halten, sollte dies von Anfang an Ihr Hauptanliegen gewesen sein. Wenn dies nicht der Fall ist, müssen Sie eine Menge Refactoring durchführen. Es gibt keine schnelle Lösung dafür, und was John vorschlägt, ist tatsächlich nett und ordentlich, wusste nicht, dass Sie interne Methoden anderen * Freund * -Assemblys aussetzen könnten. –

2

Versuchen Sie, die #pragma Direktive zu enable or disable specific warnings zu verwenden. nicht bieten wird jede Intellisense in Form von XML- Kommentare

///<summary>some documentation</summary> 
public class A{ 
    //... 
} 

#pragma warning disable 1591 
public class B{ 
    //... 
} 
3

Ein Teil der fehlenden Unterstützung in Verbindung steht.

Könnten Sie stattdessen diese Methoden mit einem einfachen <Zusammenfassung> nicht für den externen Gebrauch kommentieren. </Zusammenfassung > Kommentar?