كيفية تصدير نوع في MEF كما لو أن سمة التصدير قد تم تطبيقها على هذا النوع؟

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

سؤال

أرغب في تطبيق سمة تصدير MEF بشكل ديناميكي على نوع في وقت التشغيل ، تمامًا كما لو أن النوع كان له سمة تصدير يتم تطبيقها في وقت الترجمة.

هل هناك طريقة بسيطة للقيام بذلك؟

باستثناء ذلك ، هل هناك طريقة معقدة للقيام بذلك؟

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

المحلول

إذا كنت تستطيع استخدام .NET 4.5 (مما يعني إسقاط دعم Windows XP) ، يمكنك الآن استخدام MEF's تسجيل السمة الملقب ب نموذج الاتفاقية.

في .NET4 أو إصدار MEF Preview Expression ، لا يتم دعم هذا خارج الصندوق ، ولكن لا يزال من الممكن تمديد MEF عن طريق إنشاء تطبيقاتك الخاصة ExportProvider أو composablePartCatalog.

ال MEF Contrib Fluent Depult هو مثل هذا التنفيذ الذي يسمح لك بتسجيل الواردات والصادرات عن طريق مكالمات الطريقة.

ال توفير تعريف MEF Contrib القابل للتكوينR هو آخر يسمح لك بإعداد الواردات والصادرات في ملف XML.

خيار آخر هو القيام بالتسجيل مع Autofac ثم استخدمه تكامل MEF لجعل مكونات AUTOFAC متاحة لـ MEF.

نصائح أخرى

لست متأكدًا بنسبة 100 ٪ ولكني لا أعتقد أنه من الممكن القيام به مع MEF. نمط واحد لاستخدامه لتوفير سلوك مماثل على الرغم من أن نمط المصنع / المزود.

interface IData {} 

interface IDataProvider {
  IData Data { get; set; }
}

[Export(IDataProvider)]
class DataProvider : IDataProvider {
  public IData { get; set; }
}

يمكنك استخدام هذا النمط لتحديث تنفيذ ديناميكي IData إلى القيمة التي ترغب في استخدامها.

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