إنشاء كائن دون معرفة اسم الفئة في وقت التصميم
-
09-06-2019 - |
سؤال
باستخدام انعكاس, أنا بحاجة إلى التحقيق المستخدم DLL و إنشاء كائن من فئة في ذلك.
ما هي طريقة بسيطة للقيام بذلك ؟
المحلول
محاولة المنشط.CreateInstance.
نصائح أخرى
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 هو صديقك عن انعكاس الإشارة.