Mencari Semua Jenis Terbitan Suatu Jenis
Dalam pengaturcaraan, selalunya perlu untuk mengenal pasti semua jenis yang diwarisi daripada jenis asas tertentu. Pada masa ini, pendekatan biasa adalah untuk melelar melalui semua jenis dalam perhimpunan yang dimuatkan dan menyemak sama ada ia boleh diserahkan kepada jenis asas.
Walau bagaimanapun, kaedah yang lebih cekap dan lebih bersih ialah menggunakan pertanyaan LINQ untuk mendapatkan semua terbitan jenis:
var listOfDerivedTypes = ( from domainAssembly in AppDomain.CurrentDomain.GetAssemblies() from type in domainAssembly.GetTypes() where typeof(BaseType).IsAssignableFrom(type) select type).ToArray();
Pertanyaan ini mencari semua jenis dalam himpunan yang dimuatkan ke dalam AppDomain semasa dan menapis untuk jenis yang boleh diberikan kepada jenis asas, dengan berkesan mengembalikan senarai jenis terbitan.
Versi dan Butiran Fasih:
Kod boleh dinyatakan dalam gaya yang lebih fasih :
var listOfDerivedTypes = AppDomain.CurrentDomain.GetAssemblies() .SelectMany(domainAssembly => domainAssembly.GetTypes()) .Where(type => typeof(BaseType).IsAssignableFrom(type)) .ToArray();
Tambahan Pertimbangan:
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Semua Jenis Terbitan Jenis Asas dengan Cekap dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!