सभी ने स्पष्ट रूप से कवर किया है, इसलिए यहां एक और विकल्प है।
अपने वर्ग कुछ तरीके से प्रारंभ किया जाना चाहिए (अपने SomeObject
कुछ बिंदु पर सेट किया जाना चाहिए), ISupportInitialize को लागू करने पर विचार करें। यह आपकी कक्षा के उपयोगकर्ताओं को इंगित करता है कि यह EndInit()
से पहले वैध स्थिति में नहीं है। दुर्भाग्यवश, कोई पूर्ववर्ती सामान्य NotInitializedException
नहीं है जिसका आप उपयोग कर सकते हैं (कुछ हैं लेकिन कुछ नामस्थानों के लिए विशिष्ट हैं), इसलिए मैं इस तरह के अपवाद के निर्माण के साथ इंटरफ़ेस के कार्यान्वयन को जोड़ने का सुझाव दूंगा।
उपयोगकर्ताओं को पहले BeginInit()
पर कॉल करना होगा, फिर इंस्टेंस कॉन्फ़िगर करें, फिर EndInit()
पर कॉल करें। EndInit()
पर कॉल पर, अपने उदाहरण की स्थिति की जांच करें। यदि यह सही ढंग से इंटिलाइज्ड नहीं है, तो आप एक अवैधऑपरेशन अपवाद फेंक सकते हैं। यदि उपयोगकर्ता प्रारंभ होने से पहले आपके उदाहरण का उपयोग करने का प्रयास करते हैं, तो आप अपना NotInitializedException फेंक देंगे।
यह थोड़ा और काम है, लेकिन लाभ यह है कि आप अपने उपयोगकर्ताओं के लिए व्यापक "सफलता का गड्ढा" बना रहे हैं, यह सुनिश्चित करना कि वे तेज़ और जल्दी में विफल होने और आपके प्रकार की परिभाषा के अनुसार सही ढंग से अपने वर्गों का उपयोग करें (इंटरफ़ेस आप जो अपेक्षा करते हैं उस पर बहुत स्पष्ट है)। यह आपको कक्षा के उपयोग के तरीके के बारे में दस्तावेज के लिए, "बोलने" के लिए भी अधिक "कमरा" प्रदान करता है।
शायद यह इस विषय के लिए एक सवाल है, लेकिन क्यों एक फेंक दिया? – 4imble
महत्वपूर्ण नोट: एक संपत्ति को पढ़ा जाने पर अपवाद फेंकना चाहिए (लगभग)। (अमान्य ऑपरेशन वह है जिसे आप कर सकते हैं)। http://msdn.microsoft.com/en-us/library/bb386039.aspx – FastAl