Referenzieren von generischen Klassen und Methoden in der XML-Dokumentation
Beim schreiben von xml-Dokumentation, die Sie verwenden können <see cref="something">something</see>
das funktioniert natürlich. Aber wie Sie auf eine Klasse oder eine Methode mit generischen Typen?
public class FancyClass<T>
{
public string FancyMethod<K>(T value) { return "something fancy"; }
}
Wenn ich im Begriff war, zu schreiben, die xml-Dokumentation, die irgendwo, wie würde ich mich auf der fancy-Klasse? wie kann ich mich auf eine FancyClass<string>
? Was ist die Methode?
Beispielsweise in eine andere Klasse wollte ich lassen den Benutzer wissen, dass ich wieder eine Instanz der FancyClass<int>
. Wie könnte ich ein sehen cref Sache?
InformationsquelleAutor der Frage Svish | 2009-02-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Referenz der Methode:
InformationsquelleAutor der Antwort Lasse Vågsæther Karlsen
BTW, es war in der MSDN-Dokumentation von .Net Framework 2.0 und 3.0aber es verschwanden in der version 3.5
InformationsquelleAutor der Antwort thinkbeforecoding
Keine Antworten bisher gezeigten Arbeit, die vollständig für mich. ReSharper nicht konvertieren siehe tag in ein Strg + anklickbarer link (z.B. ), es sei denn, es vollständig aufgelöst wird.
Wenn die Methode in der OP wurden in einem namespace mit dem Namen
Test
die völlig aufgelöst link zu der gezeigten Methode wäre:<see cref="M:Test.FancyClass`1.FancyMethod``1(`0)"/>
Wie Sie vielleicht in der Lage sein, zu erarbeiten, es sollte auch nur einen umgekehrten Apostroph vor die Zahl der Klasse-Typ, Parameter, dann zwei backticks, bevor die Anzahl von Methode, Typ, Parameter, dann werden die Parameter sind 0-indiziert-parameter mit der entsprechenden Anzahl von backticks.
So können wir sehen, dass FancyClass hat 1 Klasse Typ-parameter, FancyMethod hat einen Typ-parameter, und ein Objekt der FancyClass parameter Typ wird an die Methode übergeben werden.
Wie können Sie mehr klar sehen, in diesem Beispiel:
Der link wird:
M:Test.FancyClass`2.FancyMethod``3(`0,`1,``0,``1,``2)
Oder '
Class with 2 type parameters
die einemethod with 3 type parameters
wo die Parameter der Methode sindClassType1
ClassType2
MethodType1
MethodType2
MethodType3
)Als zusätzlicher Hinweis, ich wusste nicht, dass dies irgendwo dokumentiert und ich bin nicht ein Genie, der compiler hat mir alles gesagt. Alles, was Sie tun müssen ist, erstellen Sie ein test-Projekt, aktivieren der XML-Dokumentationdann fügen Sie den code, den Sie möchten, um herauszufinden, einen link, und setzen Sie den start in ein XML-Dokument kommentieren (
///
):Dann erstellen Sie das Projekt, und die ausgegebenen XML-Dokumentation enthält den link in der
doc
->members
->member
element unter dem Attributname
:InformationsquelleAutor der Antwort MrLore
TL;DR:
Während Sie kann Referenz an eine Methode, deren Signatur enthält
FancyClass<string>
(z.B. als parameter-Typ), Sie nicht Referenz wie einen geschlossenen generischen Typ direkt. Das zweite Beispiel arbeitet rund um diese Einschränkung. (Dies zeigt sich z.B. an der MSDN-Referenzmodell Seite für die statischeSystem.String.Concat(IEnumerable<string>)
Methode). :XML-Dokumentation-Kommentar
cref
Regeln:Umgeben den generischen Typ-parameter-Liste mit geschweiften Klammern
{}
statt mit<>
Spitzen Klammern. Dies erspart Ihnen die Flucht, die letztere als<
und>
— denken Sie daran, Dokumentation Kommentare sind XML!Wenn Sie einen Präfix (wie
T:
für TypenM:
für MethodenP:
für EigenschaftenF:
für die Felder), der compiler führt keine Validierung der Referenz, sondern kopieren einfach diecref
Attribut-Wert direkt in die Dokumentation der XML-Ausgabe. Aus diesem Grund müssen Sie die besonderen "ID-string" syntax , gilt in solchen Dateien: verwenden Sie immer voll qualifizierten Bezeichner und verwenden backticks Referenz generischen Typ-Parameter (`n
auf Typen``n
auf Methoden).Wenn Sie kein Präfix angebenreguläre Sprache naming Regeln gelten: Sie können die drop-namespaces, für die es eine
using
- Anweisung, und Sie können die Sprache die Art keywords wieint
stattSystem.Int32
. Auch der compiler überprüfen Sie die Referenz für die Richtigkeit.XML-Dokumentation-Kommentar
cref
cheat sheet:InformationsquelleAutor der Antwort stakx
Weiter von den Antworten, die von Lasse und T. B. C:
wird auch tooltips korrekt, in der Erwägung, dass Ihre version rendert es mit den geschweiften Klammern.
InformationsquelleAutor der Antwort Stephen Drew
InformationsquelleAutor der Antwort JohnL4
InformationsquelleAutor der Antwort Max Toro