Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Menghantar Jenis Tanpa Nama dalam C# untuk Mengakses Sifatnya?
Hantar Jenis Tanpa Nama untuk Mengakses Sifat
Menghantar jenis awanama kembali kepada jenis asalnya boleh menimbulkan masalah apabila mengakses sifatnya. Untuk menyelesaikannya, seseorang boleh menggunakan helah untuk membuat kesimpulan jenis yang betul.
Menipu Pengkompil
Kaedah Cast
private static T Cast<T>(T typeHolder, Object x) { // typeHolder above is just for compiler magic // to infer the type to cast x to return (T)x; }
Penggunaan:
var a = new { Id = 1, Name = "Bob" }; TestMethod(a); ... private static void TestMethod(Object x) { // This is a dummy value, just to get 'a' to be of the right type var a = new { Id = 0, Name = "" }; a = Cast(a, x); Console.Out.WriteLine(a.Id + ": " + a.Name); }
Kaedah Casting Alternatif
Kaedah alternatif ialah mencipta kaedah sambungan CastTo
private static T CastTo<T>(this Object value, T targetType) { // targetType above is just for compiler magic // to infer the type to cast value to return (T)value; }
Penggunaan:
var value = x.CastTo(a);
Cadangan
Walaupun teknik ini membenarkan penghantaran jenis tanpa nama, ia adalah disyorkan untuk menggunakan jenis sebenar untuk kejelasan dan kemudahan penggunaan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghantar Jenis Tanpa Nama dalam C# untuk Mengakses Sifatnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!