TL;DR:
「どのように参照しFancyClass<T>
ますか?」
/// <see cref="FancyClass{T}"/>
「どうFancyClass<T>.FancyMethod<K>(T value)
ですか?」
/// <see cref="FancyClass{T}.FancyMethod{K}(T)"/>
「どうすれば を参照できFancyClass<string>
ますか?」
/// <see cref="SomeType.SomeMethod(FancyClass{string})"/>
/// <see cref="FancyClass{T}"/> whose generic type argument is <see cref="string"/>
署名が含まれているメソッドを参照することはできFancyClass<string>
ますが(たとえば、パラメーターの型として)、そのような閉じたジェネリック型を直接参照することはできません。2 番目の例は、その制限を回避します。(これは、静的メソッドのMSDN 参照ページSystem.String.Concat(IEnumerable<string>)
などで見られます)。:
XML ドキュメントのコメントcref
ルール:
{}
<>
ジェネリック型パラメーター リストは、山かっこではなく中かっこで囲みます。<
これにより、後者をandとしてエスケープする必要がなくなります>
— ドキュメントのコメントは XML であることを忘れないでください!
接頭辞 (T:
型、M:
メソッド、P:
プロパティ、F:
フィールドなど) を含めると、コンパイラは参照の検証を実行せず、cref
属性値をドキュメントの XML 出力に直接コピーします。このため、そのようなファイルに適用される特別な「ID 文字列」構文を使用する必要があります。常に完全修飾識別子を使用し、バッククォートを使用してジェネリック型パラメーター (`n
型、``n
メソッド) を参照します。
接頭辞 を省略すると、通常の言語命名規則が適用されます。ステートメントがある名前空間を削除したり、代わりにusing
などの言語の型キーワードを使用したりできます。また、コンパイラは参照の正確性をチェックします。int
System.Int32
XML ドキュメント コメントcref
チート シート:
namespace X
{
using System;
/// <see cref="I1"/> (or <see cref="X.I1"/> from outside X)
/// <see cref="T:X.I1"/>
interface I1
{
/// <see cref="I1.M1(int)"/> (or <see cref="M1(int)"/> from inside I1)
/// <see cref="M:X.I1.M1(System.Int32)"/>
void M1(int p);
/// <see cref="I1.M2{U}(U)"/>
/// <see cref="M:X.I1.M2``1(``0)"/>
void M2<U>(U p);
/// <see cref="I1.M3(Action{string})"/>
/// <see cref="M:X.I1.M3(System.Action{System.String})"/>
void M3(Action<string> p);
}
/// <see cref="I2{T}"/>
/// <see cref="T:X.I2`1"/>
interface I2<T>
{
/// <see cref="I2{T}.M1(int)"/>
/// <see cref="M:X.I2`1.M1(System.Int32)"/>
void M1(int p);
/// <see cref="I2{T}.M2(T)"/>
/// <see cref="M:X.I2`1.M2(`0)"/>
void M2(T p);
/// <see cref="I2{T}.M3{U}(U)"/>
/// <see cref="M:X.I2`1.M3``1(``0)"/>
void M3<U>(U p);
}
}