में [आयात] विशेषता का उचित उपयोग मैं एमईएफ सीख रहा हूं और मैं यह देखने के लिए एक सरल उदाहरण (एप्लिकेशन) बनाना चाहता था कि यह कार्रवाई में कैसे काम करता है। इस प्रकार मैंने एक साधारण अनुवादक के बारे में सोचा।एमईएफ
संविदा
वेब
BingTranslator
GoogleTranslator
संविदाITranslate
इंटरफ़ेस शामिल हैं: मैं चार परियोजनाओं (DLL फ़ाइलें) के साथ एक समाधान बनाया। जैसा कि नाम लागू होता है, इसमें केवल अनुबंध (इंटरफेस) होंगे, इस प्रकार निर्यातक और आयातक इसका उपयोग कर सकते हैं।
public interface ITranslator
{
string Translate(string text);
}
BingTranslator और GoogleTranslator इस अनुबंध के दोनों निर्यातकों हैं। वे दोनों इस अनुबंध को लागू करते हैं और विभिन्न अनुवाद सेवाओं (निर्यात) को प्रदान करते हैं (बिंग से एक, Google से दूसरा)।
[Export(typeof(ITranslator))]
public class GoogleTranslator: ITranslator
{
public string Translate(string text)
{
// Here, I would connect to Google translate and do the work.
return "Translated by Google Translator";
}
}
और BingTranslator
है:
[Export(typeof(ITranslator))]
public class BingTranslator : ITranslator
{
public string Translate(string text)
{
return "Translated by Bing";
}
}
अब, मेरी वेब परियोजना में, मैं बस, उपयोगकर्ता से पाठ मिलता है उन अनुवादकों में से एक (बिंग और गूगल के साथ यह अनुवाद करना चाहते हैं), और परिणाम को वापस उपयोगकर्ता को वापस कर दें। इस प्रकार मेरे वेब एप्लिकेशन में, मैं एक अनुवादक पर निर्भर हूं।
public class GeneralController : Controller
{
[Import]
public ITranslator Translator { get; set; }
public JsonResult Translate(string text)
{
return Json(new
{
source = text,
translation = Translator.Translate(text)
});
}
}
और पहेली के अंतिम टुकड़ा (छोटे टुकड़ों से समग्र गीत की रचना करने के) एक साथ इन घटकों (भागों) गोंद के लिए किया जाना चाहिए: इसलिए, मैं एक नियंत्रक इस तरह से बना लिया है। तो, वेब परियोजना के Application_Start
में, मेरे पास है: जिसमें
var parts = new AggregateCatalog
(
new DirectoryCatalog(Server.MapPath("/parts")),
new DirectoryCatalog(Server.MapPath("/bin"))
);
var composer = new CompositionContainer(parts);
composer.ComposeParts();
/parts
फ़ोल्डर मैं कहाँ छोड़ GoogleTranslator.dll और BingTranslator.dll फ़ाइलें (निर्यातकों इन फ़ाइलों में स्थित हैं) है , और /bin
फ़ोल्डर में मेरे पास बस Web.dll फ़ाइल है जिसमें आयातक शामिल है। हालांकि, मेरी समस्या यह है कि, एमईएफ आवश्यक अनुवादक के साथ GeneralController
की Translator
संपत्ति को पॉप्युलेट नहीं करता है। मैंने इस साइट पर एमईएफ से संबंधित लगभग हर प्रश्न को पढ़ा, लेकिन मुझे पता नहीं चला कि मेरे उदाहरण में क्या गलत है। क्या कोई मुझे बता सकता है कि मैंने यहां क्या याद किया है?
@ एलीओस्टैड का उत्तर देने के लिए धन्यवाद, लेकिन स्पष्ट रूप से मुझे समझ में नहीं आया कि मैं अपने 'ट्रांसलेटर' संपत्ति पर '[आयात]' काम करने के लिए क्या करना चाहिए। –
@ सईदनेमाती ओके, मैंने यह दिखाने के लिए अद्यतन किया है कि इसका उपयोग कैसे किया जाए। – Aliostad
ठीक है, यहां आपके विचार के लिए समकक्ष है - एमईएफ .NET का हिस्सा है और अपने आप में एक बहुत अच्छा डी ढांचा है। किसी अन्य का उपयोग अधिकांश मामलों में उचित नहीं है और केवल लाभ के बिना किसी अन्य तकनीक का परिचय देता है (यानी रखरखाव मूल्य नकारात्मक)। केवल एमईएफ का उपयोग कर 18 महीने की परियोजना पूरी की;) काफी अच्छा काम किया। – TomTom