سؤال

أريد إضافة بعض السلوك إلى فصل معين في وقت التشغيل. أعرف كيفية الفئة الفرعية في وقت التشغيل باستخدام Reflection.emit ولكن هذا لا يكفي ، اعتمادًا على بعض التكوين الخارجي ، أحتاج إلى حقن الرموز المفصلية في طريقة على نوع T ، لذا فإن جميع الفئات التي ترث منها تلقائيًا تكتسب هذا السلوك. (لا يمكنني استخدام .NET Perfiling API)

هل يمكن القيام بشيء من هذا القبيل باستخدام mono.cecil؟

إذا لم يكن من الممكن تعديل التعليمات البرمجية على مجموعة محملة ، فمن الجيد إذا كان بإمكاني إجراء التعديلات قبل تحميل التجميع ثم تحميل التجميع المعدل في الذاكرة ، لكنني لا أعرف كيف يمكنني التحكم في تحميل التجميع.

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

المحلول

كلا ، لا يمكن سيسيل تعديل مجموعة محملة. يجب عليك تجميعات الأدوات قبل تحميلها بالفعل.

ليس لديك الكثير من السيطرة على كيفية حل التجميعات. يمكنك ربط appdomain.assemblyResolve إذا قمت بإخفاء التجميعات في مجلد خاص لك ، والأداة ثم قبل تحميلها.

نصائح أخرى

كما يقول JB أعلاه - يمكنك إنشاء معالج أحداث حل - والذي سيكون مثل pseudohoking. وقبل تحميل التجميع ، يمكنك إجراء تغييراتك ، وبعد ذلك بمجرد إجراء التغييرات ، تستمر مجموعة حلها لتحميل التجميع المتغير.

أستخدم هذه الطريقة لحل DLL المدمجة من تدفقات الذاكرة.

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