Mengakses Objek Jenis Tanpa Nama Melangkaui Skop Yang Diisytiharkan
Dalam C#, jenis tanpa nama dijana secara dinamik berdasarkan nama harta dan nilai yang diekstrak daripada sumber. Walau bagaimanapun, skop objek ini terhad kepada blok di mana ia diisytiharkan. Ini menimbulkan persoalan: bagaimanakah kita boleh mengakses objek jenis tanpa nama di luar skop yang diisytiharkan?
Menggunakan "Hantar Melalui Contoh" (Dinasihatkan Berhati-hati)
Walaupun pada umumnya tidak disyorkan, teknik yang dikenali sebagai "cast by example" membenarkan mengakses objek jenis tanpa nama di luar skopnya. Godam ini melibatkan penciptaan objek "contoh" yang berasingan dengan sifat yang sama seperti jenis tanpa nama yang ingin kami akses.
Pelaksanaan:
public void FuncB() { var example = new { Id = 0, Name = string.Empty }; var obj = CastByExample(FuncA(), example); Console.WriteLine(obj.Name); } private object FuncA() { var a = from e in DB.Entities where e.Id == 1 select new { Id = e.Id, Name = e.Name }; return a.FirstOrDefault(); } private T CastByExample<T>(object target, T example) { return (T)target; }
Kaveat:
Ringkasnya, mengakses objek jenis awanama di luar skopnya menggunakan "buang melalui contoh" adalah mungkin, tetapi ini adalah amalan berisiko yang harus dielakkan apabila boleh.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengakses Objek Jenis Tanpa Nama di Luar Skop Yang Diisytiharkan dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!