Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Mendapatkan Semua Jenis Terbitan Jenis Diberikan dengan Cekap dalam .NET?

Bagaimanakah Saya Boleh Mendapatkan Semua Jenis Terbitan Jenis Diberikan dengan Cekap dalam .NET?

Susan Sarandon
Lepaskan: 2025-01-01 03:58:11
asal
921 orang telah melayarinya

How Can I Efficiently Find All Derived Types of a Given Type in .NET?

Mengenalpasti Jenis Terbitan Dengan Cekap

Dalam .NET, mencari semua jenis terbitan bagi jenis tertentu ialah tugas berguna yang sering dihadapi semasa operasi masa jalan. Pendekatan biasa melibatkan lelaran melalui semua jenis dalam perhimpunan yang dimuatkan dan menyemak kebolehtugasan kepada jenis sasaran. Walau bagaimanapun, kaedah ini boleh menjadi perlahan dan bercelaru kod.

Penyelesaian yang lebih berprestasi dan elegan adalah dengan memanfaatkan kuasa LINQ:

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

Pertanyaan Linq ini mencari dengan cekap melalui semua perhimpunan dan jenisnya, memilih hanya yang mewarisi daripada jenis asas yang ditentukan.

Pengoptimuman dan Tambahan Pertimbangan

Untuk mengoptimumkan lagi prestasi, pertimbangkan untuk menggunakan domainAssembly.GetExportedTypes() dan bukannya GetTypes(). Ini hanya mendapatkan semula jenis yang boleh dilihat secara umum, yang berpotensi mengurangkan bilangan semakan yang diperlukan.

Selain itu, ambil perhatian bahawa IsAssignableFrom termasuk jenis asas itu sendiri. Jika perlu, kecualikannya dengan menambah && type != typeof(BaseType). Untuk menapis untuk kelas konkrit sahaja, masukkan && !type.IsAbstract.

Kesimpulan

Dengan menggunakan LINQ dan mempertimbangkan pengoptimuman ini, mencari jenis terbitan menjadi sangat cekap dan mudah tugas, meningkatkan prestasi dan kebolehbacaan kod anda dengan ketara.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Semua Jenis Terbitan Jenis Diberikan dengan Cekap dalam .NET?. 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