Jika saya memiliki tanda tangan metode seperti
public string myMethod<T>( ... )
Bagaimana saya, di dalam metode, mendapatkan nama tipe yang diberikan sebagai argumen tipe? Saya ingin melakukan sesuatu yang mirip dengan typeof(T).FullName
, tetapi itu benar-benar berhasil ...
typeof(T).FullName
harus bekerja. Apa yang terjadi?Jawaban:
Kode Anda harus berfungsi.
typeof(T).FullName
sangat valid. Ini adalah program yang berfungsi penuh dan terkompilasi:Menjalankan cetakan di atas (seperti yang diharapkan):
sumber
<int?>
" Jika demikian, itu berhasil, tetapi Anda mendapatkanSystem.Nullable<int>
(dalam sintaks nama lengkap), yang Anda harapkan ...nameof(T)
dantypeof(T).Name
akan melakukan hal yang sama. Ternyatanameof(T)
baru saja kembaliT
.typeof(T).Name
dantypeof(T).FullName
bekerja untuk saya. Saya mendapatkan tipe yang disahkan sebagai argumen.sumber
Dengan asumsi Anda memiliki beberapa contoh T yang tersedia, itu tidak berbeda dari tipe lainnya.
sumber