سؤال

نحن نعمل مع تطبيق أصلي حالي (على الأرجح مكتوب في VB) الذي يحمل التجميعات وطرائق المكالمات مع "الربط المتأخر". ليس لدينا إمكانية الوصول إلى شفرة المصدر.

نريد تنفيذ هذه الواجهة في C #، وتطلب التطبيق الأصلي تجميع C #.

هل هذا شيء ممكن؟

هل هذا كل شيء يتعين علينا القيام بما يتجاوز مطابقة أسماء الأسلوب وتوقيعات الأسلوب لجعلها تعمل؟

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

المحلول 2

هذه هي الخطوات اللازمة لجعلها تعمل:

  1. ضع علامة على الطبق الخاص بك [true)]، وتأكد من منحها سمة فريدة من نوعها [GUID
  2. قم بمطابقة ProgID إلى صفك الذي هو Mynamespace.myclass عادة، ولكن يمكنك إضافة سمة في فصلك لتجاوز هذا أيضا
  3. ضع السمات المناسبة [DEPID] لكل طريقة سيتم استدعاؤها
  4. ترجمة التجمع الخاص بك وتشغيل Regasm.exe على تجميعك

وفويلا! يمكن الكود الأصلي استدعاء C # عبر "الربط المتأخر". بالطبع، كان من الضروري إعداد العديد من مفاتيح التسجيل لجعل تطبيق أقراص أصلي يعرف كيفية تحميل التجمع الخاص بي، ولكن كل شيء يعمل.

نصائح أخرى

إذا كنت تحاول الاتصال ب .NNET Code من VB6، فستكون الطريقة الأنظف هي جعل رمز C # يظهر ككائن COM إلى رمز VB6 - لذلك نعم، ستحتاج إلى تحديد رمز C # كما ComVisible والتأكد من أنها تبدو وكأنها واجهة COM الحالية.

تحديث: هنامقال لإبداعك.

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