2010-09-22 3 views
58

Ich frage mich, ob jemand weiß, wie eine Schnittstelle XML-Kommentar zu einer Implementierung zu verknüpfen. Das Problem ist, dass ich möchte, dass die Basiskommentare zuerst von meiner Schnittstelle kommen. Beispiel:Erben von XML-Kommentaren von Schnittstellen in C#

interface myinterface { 

     /// <summary> 
     /// Does something. 
     /// </summary> 
     void method1(string foo); 

} 

und dann die Umsetzung ist:

public class myclass : myinterface { 


     public void method1(string foo) { 
      //do something... 
     } 
} 

So, jetzt, wenn ich über die Methode mit meiner Maus schweben nach Instanziierung des Objekts:

myclass foo = new myclass(); 
foo.method1("do something"); 

wie kann ich das machen Kommentare erscheinen im Hover Popup? Gibt es eine Möglichkeit, die Kommentare der Benutzeroberfläche mit der Implementierung zu verknüpfen? Ich weiß, dass es einen Weg in Java gibt, aber ich kann keine Lösung für C# finden.

Dank

+9

+1 für das ist eine verdammt gute Frage ... – jcolebrand

+0

Ich habe mich immer darüber gewundert.Es sollte ein Attribut geben, das Sie einer Klasse hinzufügen können, um die Dokumentation zu erben. – BentOnCoding

+0

mögliches Duplikat von [Kommentarvererbung für C# (eigentlich jede Sprache)] (http://stackoverflow.com/questions/342964/comment-inheritance-for-c-sharp-actually-any-language) – nawfal

Antwort

18

Verknüpfung XML Kommentare ist IMHO nicht möglich, aber man konnte ein Tool wie GhostDoc verwenden, um den XML-Kommentar von Ihrer Schnittstelle/Basisklasse zur Umsetzung/abgeleiteten Klasse zu kopieren.

+1

Ja, benutze GhostDoc; Es wird zuerst sehen, ob eine Elternklasse oder Methode überschrieben wird, und den Kommentar ggf. kopieren. ReSharper wird auch xml-doc-Kommentare in den eingeschränkteren Umfang des Extrahierens neuer Oberklassen/Schnittstellen kopieren oder Mitglieder in einer Hierarchie nach oben/unten schieben. – KeithS

+0

Benötigt dies nicht die Pro-Version? Ich kann dies nur mit der Nicht-Pro-Version tun, indem ich jeweils ein Mitglied mache, und es funktioniert nicht auf Klassenebene. – Keith

+1

ReSharper kann es auch tun, wenn Sie es bereits besitzen, platzieren Sie den Cursor über eine geerbte Methode/Eigenschaft, drücken Sie "ALT + RETURN" und Sie können "Kommentare von der Basis kopieren". ReSharper erstaunt mich jeden Tag! :-) – itmuckel

6

Wenn Sie GhostDoc verwenden, hilft es sehr, die Dokumentation von den Schnittstellen zum Implementierungscode zu "transportieren".

+1

Irgendwelche Tipps, wie dies erreicht wird (Ich habe gerade Ghost Doc v4 installiert). Oder ist das eine Pro/Free Version? – Konstantin

+1

@Konstantin Ich habe immer die kostenlose Version verwendet, und nie etwas Spezifisches getan, um dies zu haben. Ich schreibe einfach die Dokumente in die Schnittstelle, und wenn ich STRG + D für eine Methode in einer implementierenden Klasse (wo die Methode noch keine Dokumente hat) drücken, wird es von der entsprechenden Methode in der Schnittstelle kopiert. Zumindest hat es so funktioniert (nicht mit GhostDoc in meinem aktuellen Projekt). –

+2

Danke scheint ein Merkmal der Pro-Version in diesen Tagen zu sein. – Konstantin

0

http://blog.x-tensive.com/2008/02/fixml.html

Es ist ein Post-Prozessor, der, wo das ursprüngliche Dokumentationssystem fehlt bestimmte zusätzliche Optionen.

Von der Website:

Kurze Zusammenfassung:

FIXML ist post-Prozessor von XML-Dokumentation von C# \ Visual Basic.Net erzeugt. Es behandelt einige der ärgerlichsten Fälle im Zusammenhang mit dem Schreiben von XML-Dokumentation in diesen Sprachen: - Keine Unterstützung für das Erben der Dokumentation von Basisklasse oder Schnittstelle. I.e. Eine Dokumentation für jedes überschriebene Mitglied sollte von Grund auf neu geschrieben werden, obwohl es normalerweise wünschenswert ist, zumindest den Teil davon zu erben. - Keine Unterstützung für das Einfügen häufig verwendeter Dokumentationsvorlagen wie "Dieser Typ ist Singleton - verwenden Sie seine Eigenschaft, um die einzige Instanz davon zu erhalten." Oder "Initialisiert eine neue Instanz der Klasse".

+0

Weiß jemand, ob X-TENSIVE FiXml die Quelldatei oder nur die XML-Ausgabedokumente ändern soll? Oh - es ist jetzt an einem etwas anderen Ort als Teil von Xtensive gefunden. MSBuildTasks http://x-tensive.com/Downloads/?Path=Freeware\Xtensive.MSBuildTasks) – kpollock

7

XMLDoc definiert Ein Tag <include /> zum Einbinden von Kommentaren aus einer anderen Datei, die es seit Visual Studio 2003 gibt. Der größte Nachteil ist, dass die referenzierte Datei eine Datei sein sollte, die nur XMLDoc-Dokumentation enthält, keine andere Quelldatei.

Weitere Informationen finden Sie unter the MSDN page.

+0

Nicht ganz eine Antwort, aber wirklich nützliche Informationen sowieso, also danke – Basic

0

Ich habe ein Befehlszeilentool erstellt, um die XML-Dokumentationsdateien nachzufüllen, die Unterstützung für das < inheritdoc/>-Tag hinzufügen.

Obwohl es nicht mit Intellisense im Quellcode hilft, erlaubt es die modifizierten XML-Dokumentationsdateien, in einem NuGet-Paket enthalten zu sein und arbeitet daher mit Intellisense in referenzierten NuGet-Paketen.

Weitere Informationen finden Sie unter www.inheritdoc.io (kostenlose Version verfügbar).

Verwandte Themen