إنشاء كائن دون معرفة اسم الفئة في وقت التصميم

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

  •  09-06-2019
  •  | 
  •  

سؤال

باستخدام انعكاس, أنا بحاجة إلى التحقيق المستخدم DLL و إنشاء كائن من فئة في ذلك.

ما هي طريقة بسيطة للقيام بذلك ؟

هل كانت مفيدة؟

المحلول

نصائح أخرى

System.Reflection.Assembly هي الطبقة سوف تحتاج إلى استخدام.أنه يحتوي على العديد من طريقة بالتكرار على أنواع الواردة مع المستخدم DLL.يمكنك من خلال تكرار كل فئة ، ربما نرى إذا كان يرث من واجهة خاصة الخ.

http://msdn.microsoft.com/en-us/library/system.reflection.assembly_members.aspx

التحقيق Assembly.GetTypes() طريقة الحصول على قائمة من أنواع أو Assembly.GetExportedTypes() العامة منها فقط.

يمكنك إنشاء مثيل فئة من نوع كائن باستخدام المنشط.CreateInstance ، للحصول على كل أنواع في dll يمكنك استخدام الجمعية.GetTypes

نلقي نظرة على هذه الروابط:

http://www.java2s.com/Code/CSharp/Development-Class/Createanobjectusingreflection.htm

http://msdn.microsoft.com/en-us/library/k3a58006.aspx

يمكنك استخدام أساسا انعكاس لتحميل الجمعية ، ثم ابحث عن نوع كنت مهتما في.مرة واحدة لديك نوع ، يمكنك أن تطلب أن تجد منشئات أو أساليب أخرى / خصائص.مرة واحدة كنت قد منشئ ، يمكن الاحتجاج بها.من السهل!

كما سبق أن قلت, أنت بحاجة إلى كزة النظام.التفكير المجرد.

إذا كنت تعرف مسبقا الموقع/اسم DLL تريد تحميلها تحتاج إلى تكرار خلال الجمعية.GetTypes().

في شبة الكود سوف ننظر بشيء من هذا القبيل:

إنشاء الجمعية الكائن.

تكرار خلال كافة أنواع الواردة في الجمعية.

بمجرد العثور على واحد كنت تبحث عنه ، الاحتجاج به (CreateInstance)...

استخدامها بحكمة.

;)

لدي الكثير من التفكير التعليمات البرمجية إذا كنت ترغب في إلقاء نظرة حولها ، ولكن مهمة هو حقا بسيطة وهناك ما لا يقل عن دزينة من المقالات مع عينات هناك في البرية.(ويعرف أيضا باسم جوجل).وعلى الرغم من ذلك ، MSDN هو صديقك عن انعكاس الإشارة.

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