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();
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!