मैं अपनी वस्तुओं के निर्माण का प्रबंधन करने के लिए एकता प्राप्त करने की कोशिश कर रहा हूं और मैं चाहता हूं कि कुछ शुरुआती पैरामीटर हों जो समय-समय पर ज्ञात न हों:
फिलहाल एक ही तरीका है कि मैं यह करने के तरीके के बारे में सोच सकता हूं कि यह इंटरफ़ेस पर एक Init विधि है।
interface IMyIntf {
void Initialize(string runTimeParam);
string RunTimeParam { get; }
}
फिर इसका उपयोग करने के लिए (एकता में) मैं यह करूंगा:
var IMyIntf = unityContainer.Resolve<IMyIntf>();
IMyIntf.Initialize("somevalue");
इस परिदृश्य में runTimeParam
उपयोगकर्ता इनपुट के आधार पर रन-टाइम पर निर्धारित किया जाता है। यहाँ तुच्छ मामला केवल मान देता है runTimeParam
लेकिन वास्तव में पैरामीटर फ़ाइल नाम की तरह कुछ होगा और आरंभिक विधि फ़ाइल के साथ कुछ करेगी।
यह कई मुद्दों को बनाता है, अर्थात् यह Initialize
विधि इंटरफ़ेस पर उपलब्ध है और इसे कई बार कहा जा सकता है। कार्यान्वयन में एक झंडा स्थापित करना और Initialize
रास्ता भटकाने के लिए दोहराया कॉल पर अपवाद फेंकना ।
उस बिंदु पर जहां मैं अपना इंटरफ़ेस हल करता हूं मैं कार्यान्वयन के बारे में कुछ भी जानना नहीं चाहता IMyIntf
। हालांकि, मैं क्या चाहता हूं, यह ज्ञान है कि इस इंटरफ़ेस को कुछ समय के प्रारंभिक मापदंडों की आवश्यकता है। क्या इस जानकारी के साथ किसी भी तरह से एनोटेट (विशेषताएँ?) इंटरफ़ेस है और जब ऑब्जेक्ट बनाया जाता है तो उन्हें पास करना होगा?
संपादित करें: इंटरफ़ेस को कुछ और बताया।
runTimeParam
एक निर्भरता है जो उपयोगकर्ता इनपुट के आधार पर रन-टाइम पर निर्धारित की जाती है। क्या इसके लिए विकल्प को दो इंटरफेस में विभाजित किया जाना चाहिए - एक आरंभीकरण के लिए और दूसरा भंडारण मूल्यों के लिए?