मुझे कई कक्षाएं मिली हैं जो IDessertPlugin
लागू करती हैं। ये विभिन्न डीएलएल में पाए जाते हैं जिन्हें मैं अपने आवेदन में प्लग-इन कार्यक्षमता के रूप में उपयोग करने के उदाहरणों को स्पिन करने के लिए एमईएफ का उपयोग करता हूं।मैं अपने एमईएफ प्लगइन वाले प्रत्येक डीएलएल का संस्करण संख्या कैसे प्राप्त करूं?
तो मैं जो करना चाहता हूं वह डीएलएल का संस्करण संख्या प्रदर्शित करता है जिसमें से मैंने MEF का उपयोग करके प्लगइन लोड किए हैं। एक या अधिक प्लगइन्स एक या अधिक डीएलएल में परिभाषित किए गए हैं जिन्हें मैं अपने आवेदन में लोड करता हूं।
अभी मैं बहुत कुछ ऐसा कार्य करें:
var catalog = new AggregateCatalog();
catalog.Catalogs.Add(
new DirectoryCatalog(Path.Combine(
Path.GetDirectoryName(Assembly.GetExecutingAssembly().location), "Plugins")));
var container = new CompositionContainer(catalog);
container.ComposeParts(this);
और वह प्लगइन्स प्लगइन्स उपनिर्देशिका है, जहां अपने आवेदन रन से ठीक ऊपर लोड होगा।
कर की तरह
catalog.Catalogs.First().Parts.First().GetType().Assembly.FullName
कुछ सिर्फ रिटर्न "System.ComponentModel.Composition, संस्करण = 4.0.0.0, ..."
क्या मुझे उम्मीद थी पता करने के लिए सक्षम होने के लिए कि मैं था केकप्लगिन्स.dll के संस्करण 1.0 और IceCreamPlugins.dll के संस्करण 1.1 मिला है। प्लगइन के पास उनके बारे में संस्करण विशेषता नहीं है - मैं डीएलएल के संस्करण पर भरोसा करना चाहता हूं। उम्मीद है कि समझ में आता है।
मुझे पता नहीं चला है कि मैं कौन से डीएलएल का उपयोग कर रहा हूं ताकि मैं उन पर Assembly.GetName().Version
पर कॉल कर सकूं।
विचार?
समाधान:
तो, मेरी समस्या का हल करने के बाद कुछ हिस्सों से बना दिया है बिल्कुल स्पष्ट था।
[ImportMany(typeof(IDessertPlugin)]
private IEnumerable<IDessertPluing> dessertPlugins;
और एक बार कंटेनर भागों रचना हुई है, मैं इतना की तरह मेरे प्लग-इन के माध्यम से पुनरावृति सकता है::
मेरे प्लगइन प्रबंध कोड तो जैसे प्रविष्टि होगी
foreach(var plugin in dessertPlugins)
{
Console.WriteLine(Assembly.GetAssembly(plugin.GetType()).GetName().Version.ToString());
}
आप चाहिए
मेरे प्लगइन प्रबंध कोड तो जैसे प्रविष्टि होगी अपने समाधान को एक उत्तर के रूप में पोस्ट करें और इसे अपने प्रश्न में पोस्ट करने के बजाय स्वीकृत के रूप में चिह्नित करें। – tomfanning