Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Mendapatkan Semua Jenis Terbitan bagi Jenis Diberi Dengan Cekap Menggunakan Refleksi?
Cari Jenis Terbitan Jenis
Dalam banyak kes, adalah perlu untuk menentukan jenis terbitan bagi jenis tertentu. Walau bagaimanapun, pendekatan lalai, seperti mengulangi semua jenis dalam pemasangan yang dimuatkan dan menyemak kebolehtugasannya, boleh menjadi tidak cekap.
Menggunakan Refleksi
Penyelesaian yang lebih berprestasi melibatkan penggunaan refleksi untuk mendapatkan semula jenis terbitan. Berikut ialah pendekatan berasaskan LINQ:
var listOfDerivedTypes = ( from domainAssembly in AppDomain.CurrentDomain.GetAssemblies() from assemblyType in domainAssembly.GetTypes() where type.IsAssignableFrom(assemblyType) select assemblyType).ToArray();
Kaedah ini berulang melalui semua perhimpunan dan menyemak sama ada jenis yang diberikan boleh diberikan kepada setiap jenis pemasangan.
Versi Fasih
Untuk meningkatkan kebolehbacaan, anda boleh menggunakan fasih versi:
var listOfDerivedTypes = AppDomain.CurrentDomain.GetAssemblies() .SelectMany(domainAssembly => domainAssembly.GetTypes()) .Where(assemblyType => type.IsAssignableFrom(assemblyType)) .ToArray();
Pertimbangan
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mendapatkan Semua Jenis Terbitan bagi Jenis Diberi Dengan Cekap Menggunakan Refleksi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!