سؤال

لدي مجموعة 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()

العديد من الأمثلة على الويب. هنا واحد (في ج # على أية حال).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top