Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mengakses Objek Jenis Tanpa Nama di Luar Skop Yang Diisytiharkan dalam C#?

Bagaimanakah Saya Boleh Mengakses Objek Jenis Tanpa Nama di Luar Skop Yang Diisytiharkan dalam C#?

Barbara Streisand
Lepaskan: 2025-01-03 13:19:40
asal
234 orang telah melayarinya

How Can I Access Anonymous Type Objects Outside Their Declared Scope in C#?

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:

  1. Buat " example", memastikan ia mempunyai sifat yang sama seperti jenis tanpa nama.
  2. Hantar jenis tanpa nama ke jenis objek "contoh" menggunakan kaedah CastByExample. Ini mengembalikan jenis tanpa nama sebagai jenis yang diingini.
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;
}
Salin selepas log masuk

Kaveat:

  • Teknik ini tidak disokong secara rasmi oleh Microsoft.
  • Ia mungkin mengakibatkan tingkah laku yang tidak dijangka dan kemungkinan ralat.
  • Ia sangat kuat dinasihatkan agar tidak menggunakan pendekatan ini dalam kod pengeluaran.

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan