كيفية التعامل مع واجهة تحميلها بشكل حيوي من التجمع والاحتجاج أعضائها

StackOverflow https://stackoverflow.com/questions/280578

سؤال

ولقد حصلت بعض رمز لتحميل تجميع والحصول على جميع أنواع، التي تنفذ واجهة معينة، مثل هذا (تفترض ASM هو تجميع صالح وتحميل).

var results = from type in asm.GetTypes()
  where typeof(IServiceJob).IsAssignableFrom(type)
  select type;

والآن أنا عالقة: أنا بحاجة إلى إنشاء مثيلات هذه الكائنات واستدعاء أساليب وخصائص على الكائن. ولست بحاجة لتخزين الإشارات إلى الكائنات التي تم إنشاؤها في مجموعة لاحق الاستخدام.

نصائح أخرى

ويمكنك إنشاء مثيل من نوع مع أسلوب Activator.CreateInstance: -

IServiceJob x = Activator.CreateInstance(type);

وهكذا يصبح التعليمات البرمجية: -

IServiceJob[] results = (from type in asm.GetTypes()
  where typeof(IServiceJob).IsAssignableFrom(type)
  select (IServiceJob)Activator.CreateInstance(type)).ToArray();

و(ملاحظة تغيير فار إلى IServiceJob [] أن نوضح ما يجري خلق).

scroll top