Angenommen, ich habe diese Schnittstelle
public interface IFoo
{
///<summary>
/// Foo method
///</summary>
void Foo();
///<summary>
/// Bar method
///</summary>
void Bar();
///<summary>
/// Situation normal
///</summary>
void Snafu();
}
Und diese Klasse
public class Foo : IFoo
{
public void Foo() { ... }
public void Bar() { ... }
public void Snafu() { ... }
}
Gibt es eine Möglichkeit oder gibt es ein Tool, mit dem ich die Kommentare jedes Mitglieds in einer Basisklasse oder Schnittstelle automatisch einfügen kann?
Weil ich es hasse, die gleichen Kommentare für jede abgeleitete Unterklasse neu zu schreiben!
c#
inheritance
comments
Jumpinjackie
quelle
quelle
Antworten:
GhostDoc macht genau das. Bei Methoden, die nicht vererbt werden, wird versucht, aus dem Namen eine Beschreibung zu erstellen.
FlingThing()
wird"Flings the Thing"
quelle
<summary>
,<param>
,<returns>
,<throws>
,etc...
Abschnitte für Sie. Viele Male mit ausreichend guten Ergebnissen; In anderen Fällen müssen Korrekturen oder Erweiterungen vorgenommen werden, der Gesamtaufwand wird jedoch reduziert.Sie können immer
<inheritdoc />
Tag verwenden.quelle
Verwenden
/// <inheritdoc/>
Sie diese Option, wenn Sie eine Vererbung wünschen. Vermeiden Sie GhostDoc oder ähnliches.Ich bin damit einverstanden, dass es ärgerlich ist, dass Kommentare nicht vererbt werden. Es wäre ein ziemlich einfaches Add-In zu erstellen, wenn jemand die Zeit hätte (ich wünschte, ich hätte es getan).
In unserer Codebasis fügen wir jedoch nur XML-Kommentare zu den Schnittstellen hinzu und fügen der Klasse zusätzliche Implementierungskommentare hinzu. Dies funktioniert für uns, da unsere Klassen privat / intern sind und nur die Schnittstelle öffentlich ist. Jedes Mal, wenn wir die Objekte über die Schnittstellen verwenden, werden vollständige Kommentare in Intelligenz angezeigt.
GhostDoc ist ein guter Anfang und hat das Schreiben von Kommentaren erleichtert. Es ist besonders nützlich, die Kommentare auf dem neuesten Stand zu halten, wenn Sie Parameter hinzufügen / entfernen, GhostDoc erneut ausführen und die Beschreibung aktualisieren.quelle
<param name="origin">The origin.</param>
. Weitere Beispiele finden Sie unter Ghostdoc, das die verdammtesten Dinge sagt . Visual Studio verfügt jetzt über viel bessere Flusen und Generatoren für xmldocs, damit Sie wissen, wenn Parameter + Dokumente nicht ausgerichtet sind, sodass GhostDoc (oder andere Tools) nicht mehr benötigt werden.Java hat das und ich benutze es die ganze Zeit. Mach einfach:
Und das Javadoc-Tool findet es heraus.
C # hat einen ähnlichen Marker:
Hier können Sie mehr lesen:
http://www.ewoodruff.us/shfbdocs/html/79897974-ffc9-4b84-91a5-e50c66a0221d.htm
quelle
<inheritdoc/>
Marker nicht: Sandcastle hat ihn. shfb.codeplex.comIch würde sagen, die direkt zu verwenden
Und
Sie müssen diese Kommentare nur in die vorherige Zeile Ihrer Klasse / Methode einfügen
Dadurch erhalten Sie die Informationen Ihrer Kommentare beispielsweise von einer Schnittstelle, die Sie wie folgt dokumentiert haben:
quelle
Resharper bietet die Möglichkeit, die Kommentare aus der Basisklasse oder der Schnittstelle zu kopieren.
quelle
Eine andere Möglichkeit ist die Verwendung des
<see />
XML-Dokumentations-Tags. Dies ist ein zusätzlicher Aufwand, funktioniert aber sofort ...Hier sind einige Beispiele:
Aktualisieren:
Ich bevorzuge jetzt die Verwendung,
/// <inheritdoc/>
die jetzt von ReSharper unterstützt wird.quelle
Am Ende habe ich ein Tool zum Nachbearbeiten der XML-Dokumentationsdateien erstellt, um Unterstützung für das Ersetzen des
<inheritdoc/>
Tags in den XML-Dokumentationsdateien selbst hinzuzufügen . Verfügbar unter www.inheritdoc.io (kostenlose Version verfügbar).quelle
Nun, es gibt eine Art native Lösung, die ich für .NET Core 2.2 gefunden habe
Die Idee ist,
<include>
Tag zu verwenden .Sie können hinzufügen
<GenerateDocumentationFile>true</GenerateDocumentationFile>
Ihre.csproj
Datei.Möglicherweise haben Sie eine Schnittstelle:
Und etwas, das davon erbt:
Ok, es ist ein bisschen beängstigend, aber es fügt die erwarteten Elemente hinzu
YourNamespace.xml
.Wenn Sie bauen
Debug
Konfiguration können Sie tauschenRelease
fürDebug
imfile
Attribut -include
Tag.Um eine korrekte zu finden
member
‚sname
nur offen erzeugt Referenz -Documentation.xml
Datei.Ich gehe auch davon aus, dass für diesen Ansatz ein Projekt oder eine Lösung mindestens zweimal erstellt werden muss (zum ersten Mal, um eine erste XML-Datei zu erstellen, und zum zweiten Mal, um Elemente daraus in sich selbst zu kopieren).
Die gute Seite ist, dass Visual Studio kopierte Elemente validiert, sodass es viel einfacher ist, Dokumentation und Code mit der Schnittstelle / Basisklasse usw. synchron zu halten (z. B. Namen von Argumenten, Namen von Typparametern usw.).
Bei meinem Projekt habe ich sowohl
<inheritdoc/>
(für DocFX) als auch<include/>
(für die Veröffentlichung von NuGet-Paketen und für die Validierung in Visual Studio) Folgendes erreicht :quelle