यह सुनिश्चित नहीं है कि यह संभव है या नहीं।क्या मैं पैरामीटर के आधार पर कार्यान्वयन को वापस करने के लिए टाइप की गई फैक्ट्री सुविधा का उपयोग कर सकता हूं?
मुझे एनम मूल्य के आधार पर सेवा के सही कार्यान्वयन को वापस करने की आवश्यकता है। तो हाथ कोडित कार्यान्वयन कुछ ऐसा दिखाई देगा:
public enum MyEnum
{
One,
Two
}
public class MyFactory
{
public ITypeIWantToCreate Create(MyEnum type)
{
switch (type)
{
case MyEnum.One
return new TypeIWantToCreate1();
break;
case MyEnum.Two
return new TypeIWantToCreate2();
break;
default:
return null;
}
}
}
कार्यान्वयन लौटाए गए अतिरिक्त निर्भरता जो कंटेनर के माध्यम से इंजेक्ट किया जा करने की आवश्यकता होगी है, तो एक हाथ से लुढ़का कारखाना काम नहीं करेगा।
क्या यह संभव है, और यदि ऐसा है तो पंजीकरण कैसा दिखता है?
क्या अपने कंटेनर में है कि कारखाना पंजीकरण के साथ कुछ गड़बड़ है, इसका चयनकर्ता के रूप में इस्तेमाल किया जाएगा, और बजाय 'नई Type1' करने का, बस कंटेनर में वापस बुला? – Steven
मैं सीधे कंटेनर से हल नहीं करना चाहता - मुझे कोड में इस बिंदु पर कंटेनर तक पहुंच नहीं होगी। –
अपने आवेदन के [रचना रूट] (http://blog.ploeh.dk/2011/07/28/CompositionRoot.aspx) का उस कारखाना भाग बनाएं (और इसे 'IMyFactroy' इंटरफ़ेस पर निर्भर करता है जो कि इसका हिस्सा है आवेदन पत्र)। उस स्थिति में कंटेनर तक पहुंचना ठीक है ([यह * सेवा लोकेटर एंटी-पैटर्न नहीं है] (http://blog.ploeh.dk/2011/08/25/ServiceLocatorRolesVsMechanics.aspx))। बस कारखाने के निर्माता में कंटेनर इंजेक्ट करें और आप ठीक हैं। – Steven