2010-11-17 28 views
5

मैं रन-टाइम पर एक प्रकार के लिए एमईएफ निर्यात विशेषता को गतिशील रूप से लागू करना चाहता हूं, ठीक उसी तरह जैसे कि प्रकार के पास संकलन समय पर निर्यात विशेषता थी।एमईएफ में एक प्रकार का निर्यात कैसे करें जैसे कि निर्यात विशेषता उस प्रकार लागू की गई थी?

क्या ऐसा करने का कोई आसान तरीका है?

यह छोड़कर, क्या ऐसा करने का कोई जटिल तरीका है?

उत्तर

7

यदि आप .NET 4.5 (जिसका अर्थ है कि विंडोज एक्सपी समर्थन छोड़ना) का उपयोग करने का जोखिम हो सकता है, तो अब आप एमईएफ के attribute-less registration उर्फ ​​Convention Model का उपयोग कर सकते हैं।

.NET4 या पहले MEF पूर्वावलोकन रिलीज़ में यह बॉक्स से समर्थित नहीं है, लेकिन MEF को अभी भी ExportProvider या ComposablePartCatalog के अपने कार्यान्वयन के द्वारा बढ़ाया जा सकता है।

MEF Contrib Fluent Definition Provider ऐसा कार्यान्वयन है जो आपको विधि कॉल द्वारा आयात और निर्यात पंजीकृत करने की अनुमति देता है।

MEF Contrib Configurable Definition Provide आर एक और है जो आपको एक एक्सएमएल फ़ाइल में आयात और निर्यात स्थापित करने की अनुमति देता है।

फिर भी एक और विकल्प Autofac के साथ पंजीकरण करना है और उसके बाद ऑटोफैक घटक MEF को उपलब्ध कराने के लिए MEF integration का उपयोग करना है।

+0

विकल्पों की इस संक्षिप्त सूची के लिए धन्यवाद। –

+0

@WimCoenen मुझे लगता है कि एमईएफ 2 के लिए आपका खुद का लेख बेहतर हो सकता है: http://mindinthewater.blogspot.nl/2011/03/mef-attribute-less-registration.html –

+0

@ ज़िदाद: टिप्पणी के लिए धन्यवाद, मेरे पास है इस (पुराने) उत्तर को अपडेट किया गया। –

1

मैं 100% निश्चित नहीं हूं लेकिन मुझे नहीं लगता कि एमईएफ के साथ ऐसा करना संभव है। कारखाना/प्रदाता पैटर्न हालांकि समान व्यवहार प्रदान करने के लिए उपयोग करने के लिए एक पैटर्न।

interface IData {} 

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

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

आप गतिशील रूप से मूल्य आप उपयोग करना चाहते हैं के लिए IData के कार्यान्वयन अद्यतन करने के लिए इस पद्धति का उपयोग कर सकते हैं।