Mendapatkan semua kelas dalam ruang nama tertentu adalah penting dalam pelbagai senario. Dalam C#, terdapat pendekatan menyeluruh untuk menyelesaikan tugasan ini.
Untuk menangani keperluan ini, kami akan meneroka pendekatan ke belakang. Dengan menyenaraikan semua jenis pada mulanya dalam perhimpunan dan kemudian meneliti ruang nama setiap jenis, kami boleh menapis kelas yang diingini dengan berkesan.
Coretan kod berikut mempamerkan teknik ini:
using System.Reflection; private Type[] GetTypesInNamespace(Assembly assembly, string nameSpace) { return assembly.GetTypes() .Where(t => String.Equals(t.Namespace, nameSpace, StringComparison.Ordinal)) .ToArray(); }
Untuk menggambarkan penggunaannya, pertimbangkan contoh berikut:
Type[] typelist = GetTypesInNamespace(Assembly.GetExecutingAssembly(), "MyNamespace"); for (int i = 0; i < typelist.Length; i++) { Console.WriteLine(typelist[i].Name); }
Dalam persekitaran sebelum .Net 2.0, apabila "Assembly.GetExecutingAssembly()" tidak tersedia, anda memerlukan penyelesaian untuk mendapatkan semula pemasangan seperti berikut:
Assembly myAssembly = typeof(<Namespace>.<someClass>).GetTypeInfo().Assembly; Type[] typelist = GetTypesInNamespace(myAssembly, "<Namespace>"); for (int i = 0; i < typelist.Length; i++) { Console.WriteLine(typelist[i].Name); }
Dengan menggunakan kaedah ini, anda boleh menghitung semua kelas dengan berkesan dalam ruang nama yang diingini dalam C#.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Dapatkan Semua Kelas Dalam Ruang Nama Tertentu dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!