كيفية تصدير نوع في MEF كما لو أن سمة التصدير قد تم تطبيقها على هذا النوع؟
-
25-09-2019 - |
سؤال
أرغب في تطبيق سمة تصدير 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
إلى القيمة التي ترغب في استخدامها.