Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah LINQ Boleh Mencari Semua Jenis Terbitan bagi Jenis Asas Tertentu dengan Cekap?

Bagaimanakah LINQ Boleh Mencari Semua Jenis Terbitan bagi Jenis Asas Tertentu dengan Cekap?

Linda Hamilton
Lepaskan: 2025-01-03 19:04:41
asal
670 orang telah melayarinya

How Can LINQ Efficiently Find All Derived Types of a Specified Base Type?

Mencari Jenis Terbitan Jenis Tertentu

Dalam pengaturcaraan, selalunya perlu untuk menentukan semua jenis terbitan jenis asas tertentu. Secara tradisinya, ini telah dicapai melalui teknik yang susah payah seperti mengulangi semua jenis dalam perhimpunan yang dimuatkan dan menyemak secara manual untuk menentukan kebolehtugasan kepada jenis sasaran.

Walau bagaimanapun, penyelesaian yang lebih cekap dan elegan wujud menggunakan LINQ (Pertanyaan Bersepadu Bahasa) . Coretan kod berikut menyediakan cara yang mudah dan berprestasi untuk menyelesaikan tugas ini:

var listOfDerivedTypes = (
                from domainAssembly in AppDomain.CurrentDomain.GetAssemblies()
                from type in domainAssembly.GetTypes()
                where typeof(BaseTypeName).IsAssignableFrom(type)
                select type).ToArray();
Salin selepas log masuk

Sintaks Fasih Alternatif:

Ekspresi LINQ juga boleh ditulis dalam bentuk yang lebih gaya fasih untuk dipertingkatkan kebolehbacaan:

var listOfDerivedTypes = AppDomain.CurrentDomain.GetAssemblies()
                .SelectMany(domainAssembly => domainAssembly.GetTypes())
                .Where(type => typeof(BaseTypeName).IsAssignableFrom(type))
                .ToArray();
Salin selepas log masuk

Penyesuaian:

  • Jenis Kelihatan Umum Sahaja: Untuk mendapatkan semula jenis yang boleh dilihat secara umum, gunakan domainAssembly .GetExportedTypes() bukannya domainAssembly.GetTypes().
  • Kecualikan Kelas Asas Asal: Untuk mengelakkan jenis asas asal daripada dimasukkan dalam keputusan, tambah && taip != typeof(BaseTypeName) pada klausa where.
  • Kecualikan Kelas Abstrak: Untuk mengecualikan kelas abstrak, tambah && ! type.IsAbstract to the where.
  • Jenis Generik: Pengendalian jenis generik memerlukan pertimbangan tambahan. Untuk panduan, rujuk sumber yang dipautkan dalam bahagian "Butiran".

Atas ialah kandungan terperinci Bagaimanakah LINQ Boleh Mencari Semua Jenis Terbitan bagi Jenis Asas Tertentu dengan Cekap?. 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