Saat menulis dokumentasi xml dapat Anda gunakan <see cref="something">something</see>
, yang tentu saja berfungsi. Tetapi bagaimana Anda merujuk kelas atau metode dengan tipe generik?
public class FancyClass<T>
{
public string FancyMethod<K>(T value) { return "something fancy"; }
}
Jika saya akan menulis dokumentasi xml di suatu tempat, bagaimana saya mereferensikan kelas mewah? bagaimana saya bisa referensi FancyClass<string>
? Bagaimana dengan metodenya?
Sebagai contoh di kelas yang berbeda saya ingin memberi tahu pengguna bahwa saya akan mengembalikan instance FancyClass<int>
. Bagaimana saya bisa membuat benda yang terlihat untuk itu?
1{T}.FancyMethod
1 {K} (T)"BTW, itu hadir dalam dokumentasi MSDN .Net Framework 2.0 dan 3.0 , tetapi menghilang dalam versi 3.5
sumber
Int32
alih-alihint
,Single
alih-alihfloat
dll. (Meletakkan info ini di sini kalau-kalau ada orang lain yang tersandung)TL; DR:
Meskipun Anda dapat mereferensikan metode yang tanda tangannya termasuk
FancyClass<string>
(misalnya sebagai tipe parameter), Anda tidak dapat mereferensikan tipe generik tertutup secara langsung. Contoh kedua mengatasi batasan itu. (Ini terlihat misalnya pada halaman referensi MSDN untukSystem.String.Concat(IEnumerable<string>)
metode statis ). :cref
Aturan komentar dokumentasi XML :Kelilingi daftar parameter tipe umum dengan kurung kurawal
{}
alih-alih dengan<>
kurung sudut. Ini membuat Anda terhindar dari yang terakhir<
dan>
- ingat, komentar dokumentasi adalah XML!Jika Anda menyertakan awalan (seperti
T:
untuk tipe,M:
untuk metode,P:
untuk properti,F:
untuk bidang), kompiler tidak akan melakukan validasi referensi, tetapi cukup salin nilaicref
atribut langsung ke output XML dokumentasi. Untuk alasan ini, Anda harus menggunakan sintaks "string ID" khusus yang berlaku dalam file tersebut: selalu gunakan pengidentifikasi yang sepenuhnya memenuhi syarat, dan gunakan backtick untuk referensi parameter tipe umum (`n
pada tipe,``n
pada metode).Jika Anda menghilangkan awalan , aturan penamaan bahasa biasa berlaku: Anda dapat menjatuhkan ruang nama yang berisi
using
pernyataan, dan Anda dapat menggunakan kata kunci jenis bahasa sepertiint
bukanSystem.Int32
. Juga, kompiler akan memeriksa referensi untuk kebenaran.cref
Lembar contekan komentar dokumentasi XML :sumber
T
bagian?<typeparamref name="T"/>
Tidak ada jawaban yang ditunjukkan sejauh ini yang berfungsi sepenuhnya untuk saya. ReSharper tidak akan mengonversi tag lihat menjadi Ctrltautan + klik-bisa (mis. ) Kecuali itu sepenuhnya diselesaikan.
Jika metode dalam OP berada dalam namespace yang disebut
Test
, tautan yang sepenuhnya terselesaikan ke metode yang ditampilkan adalah:<see cref="M:Test.FancyClass`1.FancyMethod``1(`0)"/>
Karena Anda mungkin dapat bekerja, seharusnya hanya ada satu backtick sebelum jumlah parameter tipe kelas, kemudian dua backtick sebelum jumlah parameter tipe metode, maka parameternya adalah parameter indeks-nol dengan jumlah backticks yang sesuai.
Jadi kita dapat melihat bahwa
FancyClass
memiliki satu parameter tipe kelas,FancyMethod
memiliki satu tipe parameter, dan objekFancyClass
tipe parameter akan diteruskan ke metode.Seperti yang dapat Anda lihat dengan lebih jelas dalam contoh ini:
Tautan menjadi:
M:Test.FancyClass`2.FancyMethod``3(`0,`1,``0,``1,``2)
Atau "Kelas dengan dua jenis parameter yang memiliki metode dengan tiga parameter jenis di mana parameter metode yang
ClassType1
,ClassType2
,MethodType1
,MethodType2
,MethodType3
"Sebagai catatan tambahan, saya tidak menemukan ini didokumentasikan di mana pun dan saya bukan jenius, kompiler mengatakan kepada saya semua ini. Yang harus Anda lakukan adalah membuat proyek pengujian, mengaktifkan dokumentasi XML , lalu menyisipkan kode yang ingin Anda buat tautannya, dan menuliskan komentar dokumen XML di atasnya (
///
):Kemudian buat proyek Anda, dan dokumentasi XML yang dihasilkan menyertakan tautan dalam elemen
doc
->members
-> dimember
bawah atributname
:sumber
Lebih jauh dari jawaban oleh Lasse dan TBC:
juga akan memberikan tooltips dengan benar, sedangkan versi mereka membuatnya dengan kurung kurawal.
sumber
1{T}"/>** causes a build-time warning: **XML comment on 'Blah' has syntactically incorrect cref attribute 'System.Collections.Generic.List
1 <T> - maukah Anda menguraikan bagaimana seseorang harus menggunakan ini?sumber
sumber