Mencari Jenis Terbitan: Pendekatan Cekap dan Komprehensif
Dalam pembangunan perisian, adalah penting untuk mengenal pasti semua jenis yang diperoleh daripada jenis asas tertentu . Walaupun pendekatan biasa melibatkan penyemakan kebolehtugasan, ia mungkin tidak optimum dari segi prestasi atau keanggunan.
Penyelesaian Berasaskan Linq
Pendekatan yang lebih cekap dan ringkas dari segi sintaksis adalah untuk memanfaatkan Linq. Coretan kod berikut menunjukkan pertanyaan Linq yang mencari semua jenis yang diwarisi daripada jenis asas B:
var listOfBs = ( from domainAssembly in AppDomain.CurrentDomain.GetAssemblies() // alternative: from domainAssembly in domainAssembly.GetExportedTypes() from type in domainAssembly.GetTypes() where typeof(B).IsAssignableFrom(type) // alternative: && type != typeof(B) // alternative: && ! type.IsAbstract // alternative: where type.IsSubclassOf(typeof(B)) select type).ToArray();
API Fasih untuk Kebolehbacaan Dipertingkat
Untuk meningkatkan kebolehbacaan dan kebolehselenggaraan , pertanyaan di atas boleh difaktorkan semula menggunakan fasih API:
var listOfBs = AppDomain.CurrentDomain.GetAssemblies() // alternative: .GetExportedTypes() .SelectMany(domainAssembly => domainAssembly.GetTypes()) .Where(type => typeof(B).IsAssignableFrom(type) // alternative: => type.IsSubclassOf(typeof(B)) // alternative: && type != typeof(B) // alternative: && ! type.IsAbstract ).ToArray();
Pertimbangan dan Penambahbaikan
Pendekatan berasaskan Linq ini menawarkan beberapa kelebihan:
Kesimpulan
Penyelesaian berasaskan Linq ini menyediakan cara yang berprestasi dan boleh diperluaskan untuk mendapatkan semua jenis terbitan jenis asas tertentu. Fleksibiliti dan fleksibilitinya menjadikannya boleh disesuaikan dengan pelbagai kes penggunaan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Cari Semua Jenis Terbitan dengan Cekap dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!