اسرع وسيلة للدعوة الى COM الكائنات طريقة دون استخدام RCW

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

  •  03-07-2019
  •  | 
  •  

سؤال

وأنا أحاول أن تجد أنظف وأسرع وسيلة لاستدعاء COM كائنات الأساليب.

وكنت استخدام RCW لكائن ولكن في كل مرة نسخة جديدة من وجوه COM طرف ثالث يخرج التغييرات GUID والتي ثم يجعل RCW عديمة الفائدة، لذلك اضطررت لتغيير والبدء باستخدام

Type mytype = Type.GetTypeFromProgID("MyCOMApp.Application"); 

وهكذا في كل مرة نسخة جديدة من الكائن COM يخرج ليس لدي لrecomplie وإعادة نشر التطبيق الخاص بي.

في هذه اللحظة أنا أستخدم refelection مثل mytype.InvokeMemeber لكني أشعر أنها بطيئة جدا بالمقارنة مع مجرد استدعاء RCW.

وكيف الجميع معالجة مشكلة تغيير الإصدارات كائن COM 3rd الطرف، ولكن لا يزال الحفاظ على سرعة RCW؟

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

المحلول

إذا كنت تريد أن تجعل المكالمات في انعكاس أسهل، يمكنك استخدام VB.NET، وإجراء مكالمات متأخرة على متغير كتبته أنه كائن. سوف VB.NET مساعدة مع الدعوات للتفكير. يمكنك أيضا تعيين إشارة إلى Microsoft.VisualBasic.dll وجعل الدعوة إلى CallByName وكذلك للمساعدة في المكالمات التفكير.

ولكن، هل هو IID (واجهة GUID) أو GUID الفئة التي يتغير؟ إذا كان هذا هو GUID الفئة التي يتغير، ثم يمكنك تحديد واجهة واحدة، ومن ثم الحصول على نوع من خلال الدعوة إلى GetTypeFromProgID. وبمجرد الانتهاء من ذلك، يمكنك تمرير نوع إلى أسلوب CreateInstance على الطبقة المنشط ثم يلقي إلى الواجهة، التي لن تتغير.

وإذا كان IID لا تتغير، ومع ذلك، سيكون لديك لاستخدام التفكير في كل مرة.

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