قائمة الطبقات في التجمع
-
29-08-2019 - |
سؤال
لدي مجموعة DLL، التي توجد فيها فئات مختلفة. كل فئة لديها حوالي 50-100 عضو و 4-5 وظائف. كيف يمكنني إنشاء قائمة بجميع الفئات وأعضائها باستخدام برنامج VB.NET؟
أحتاج إلى إظهار للمستخدم لإجراء عملية باستخدام فئة معينة.
المحلول
انظر الوثائق ل system.reflection.geembly.gettypes () و system.type.gets ()
- larwsw.
نصائح أخرى
على افتراض أنك قمت بتحميلها إلى Thatasasas (في هذا السابق، فأنا أستخدم الجمعية المنفذة)،
سيحصل ذلك على جميع فصول غير مجردة:
Assembly thisAsm = Assembly.GetExecutingAssembly();
List<Type> types = thisAsm.GetTypes().Where(t => t.IsClass && !t.IsAbstract).ToList();
وهذا سيحصل على جميع الطبقات التي تنفذ واجهة محددة.
(على سبيل المثال. إذا كنت بحاجة إلى الحصول على الفصول فقط التي تنفذ Iyourinterface، ثم)
Assembly thisAsm = Assembly.GetExecutingAssembly();
List<Type> types = thisAsm.GetTypes().Where
(t => ((typeof(IYourInterface).IsAssignableFrom(t)
&& t.IsClass && !t.IsAbstract))).ToList();
بمجرد أن تكون هذه قائمة العناصر هذه، يمكنك إظهار أعضاء كل نوع، عن طريق استدعاء GetProperties () و GetMethods () على كل عضو في قائمة الأنواع.
يمكنك الحصول على كل نوع يرث من استمارة في vb.net:
Dim thisAsm As Assembly = Assembly.GetExecutingAssembly()
Dim types As List(Of Type) = thisAsm.GetTypes().Where(Function(t) t.BaseType = GetType(Form)).ToList()
هنا إصدار VB.NET بناء على إجابة AmazedSaint:
Dim thisAsm As Assembly = Assembly.GetExecutingAssembly()
Dim types As List(Of Type) = thisAsm
.GetTypes()
.Where(Function(t) t.IsClass AndAlso Not t.IsAbstract).ToList()
Dim thisAsm As Assembly = Assembly.GetExecutingAssembly()
Dim types As List(Of Type) = thisAsm
.GetTypes()
.Where(Function(t) ((GetType(IYourInterface).IsAssignableFrom(t) AndAlso t.IsClass AndAlso Not t.IsAbstract))).ToList()