سؤال

النظر في اثنين .NET DLLS. الأول ، "application.dll" يحتوي على منطق الأعمال الرئيسي ورمز الوصول إلى البيانات. والثاني ، "webservice.dll" يتكون في الغالب من ويب ويب التي ترتبط بالكائنات والأساليب مع application.dll لغرض توفير مكالمات WebService إلى التعليمات البرمجية الحالية.

ما هي التغييرات (على سبيل المثال إضافة فئات جديدة ، إضافة حقل أو طريقة جديدة إلى فئة موجودة وما إلى ذلك) لا يمكن إجراؤها إلى Application.dll دون الحاجة إلى إعادة ترجمة لـ WebService.dll؟

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

المحلول

معظم الأشياء ستكون على ما يرام. بعض الأشياء التي ستكسرها:

  • إزالة* أنواع المستخدمة (ما لم تكن تستخدم نوعًا ما)
  • إزالة* الطرق المستخدمة (بما في ذلك مُنشئ)
  • تغيير توقيع الأساليب (المستخدمة)
  • تغيير الحقول العامة إلى الخصائص (التي يتم استخدامها)
  • تغيير التسلسل الداخلي إذا تم استخدام التسلسل
  • إضافة طريقة إلى واجهة ، حيث يحتوي DLL الثاني على نوع ينفذ تلك الواجهة
  • إضافة طريقة مجردة إلى فئة أساسية ورثت في DLL الثاني
  • تقريبا أي شيء داخلي إذا تم استخدام انعكاس الاختراق (AB)
  • إضافة قيود إلى نوع/طريقة عامة
  • وضع علامة كما sealed عندما ورث في DLL الثاني
  • إضافة حقل إلى struct إذا كان المتصل يستخدم تهيئة العضو بدلاً من تهيئة المنشئ

(تشمل الإزالة تغيير إمكانية الوصول إلى شيء غير عام)

نصائح أخرى

من الناحية الفنية ، سوف يكسر الاسم (الاسم والإصدار ورمز المفتاح في حالة التجميعات القوية المسماة). خلاف ذلك ، سوف الإطار محاولة لتحميل واستخدام DLL ، وسيعمل هذا على ما يرام أكثر أو أقل حتى يصل إلى نوع مختلف أو توقيع طريقة ، نوع مفقود وما إلى ذلك. منها).

أقترح قراءة المزيد عن نسخة التجميع للحصول على فكرة عن كيفية حل مثل هذه القضايا.

يمكنك إجراء أي تغييرات على application.dll دون الحاجة إلى إعادة ترجمة WebService.dll طالما أنك لا تتصل بالفئات الجديدة ، الوظائف [المضافة في application.dll]. إذا كنت ترغب في استهلاك أي من التغييرات الخاصة بك.

Ofcourse ، إذا قمت بتغيير توقيع أو مستوى الوصول لأي من الأساليب أو الخصائص في application.dll التي تستخدمها WebSrvice.dll ، فسوف يكسر الكود في WebService.

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