Persoalannya ialah cara menghantar objek kepada jenis tanpa nama. Jenis tanpa nama dicipta menggunakan pemula objek dan sering digunakan sebagai cara yang mudah untuk menyimpan data. Walau bagaimanapun, mereka tidak mempunyai nama jenis, yang boleh menyukarkan untuk menghantarnya.
Salah satu cara untuk menghantar objek kepada jenis tanpa nama adalah dengan menggunakan helah yang melibatkan penggunaan nilai tiruan daripada anonim yang diingini taip. Nilai dummy ini digunakan untuk membuat kesimpulan jenis objek yang akan dihantar. Berikut ialah contoh:
public class Program { public static void Main(string[] args) { 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.WriteLine(a.Id + ": " + a.Name); } 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; } }
Cara lain untuk menghantar objek kepada jenis tanpa nama ialah menggunakan kaedah sambungan generik. Kaedah ini boleh digunakan untuk menghantar objek kepada mana-mana jenis tanpa nama. Berikut ialah contoh:
public static class AnonymousTypeExtensions { public 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; } } public class Program { public static void Main(string[] args) { var a = new { Id = 1, Name = "Bob" }; var b = a.CastTo(new { Id = 0, Name = "" }); Console.WriteLine(b.Id + ": " + b.Name); } }
Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa menggunakan jenis tanpa nama dengan cara ini boleh menjadi rumit dan tidak disyorkan secara umum. Adalah lebih baik untuk menggunakan jenis sebenar.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghantar Objek kepada Jenis Tanpa Nama dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!