यह मेरे लिए सिफारिश की गई थी कि, जब एक आईओसी कंटेनर का उपयोग कर, मैं इस बदलना चाहिए:आईओसी कंटेनर और IDisposable
class Foobar: IFoobar, IDisposable {};
इस में
:
interface IFoobar: IDisposable{};
class Foobar : IFoobar{};
मैं सोच रहा हूँ अगर यह ठीक है , या अगर यह एक समस्या हल करता है और दूसरा बनाता है। यह निश्चित रूप से समस्या है जहाँ मैं बुरी तरह से ऐसा करना चाहते हैं को हल करती है:
using(IFoobar = myContainer.Resolve<IFoobar>())
{ ... }
और अब मुझे पता है कि किसी भी विकल्प एक रन-टाइम त्रुटि पैदा नहीं होगी।
दूसरी तरफ, अब मेरे सभी नकली वस्तुओं को भी IDISposable को संभालना होगा। क्या मैं सही हूं कि किसी भी मॉकिंग फ्रेमवर्क ने इसे आसानी से संभाला है? यदि हां, तो शायद यह एक गैर-मुद्दा है।
या यह है? क्या कोई और छुपा गचाचा है जिसके लिए मुझे देखना चाहिए? यह निश्चित रूप से मेरे लिए होता है कि यदि मैं एक आईओसी कंटेनर का उपयोग यूनिट परीक्षण/मॉकिंग के लिए नहीं कर रहा था, लेकिन सच्ची सेवा आजादी के लिए, तो यह एक समस्या हो सकती है क्योंकि शायद मेरी स्वीकार्य सेवाओं में से केवल एक ही अप्रबंधित संसाधनों से संबंधित है (और अब मैं ' मैं इन अन्य सेवाओं में खाली "पहचान" संचालन को लागू करने के लिए है)।
यहां तक कि यह बाद का मुद्दा मुझे लगता है कि मैं "उपयोग" कथन को नियोजित करने की क्षमता प्राप्त करने के लिए, साथ ही ऊपर डेमो के रूप में काम करने की क्षमता प्राप्त करने के लिए भी रह सकता हूं। लेकिन क्या मैं एक लोकप्रिय सम्मेलन का पालन कर रहा हूं, या क्या मैं पूरी तरह से अलग और बेहतर समाधान खो रहा हूं?
किसने इसकी अनुशंसा की? किस कंटेनर के लिए? –
आपने यह भी देखा है http://stackoverflow.com/questions/987761/how-do-you-reconcile-idisposable-and-ioc? –
ऊपर दिखाया गया तकनीक किसी अन्य इंजीनियर द्वारा सुझाया गया था जिसके साथ मैं काम करता हूं। और हाँ, मैंने पहले से ही उस स्टैक ओवरफ्लो लिंक को देखा था। असल में, इसने मुझे यह अन्य धागा शुरू करने के लिए प्रेरित किया: http://groups.google.com/group/structuremap-users/browse_thread/thread/6be80baf98c25820 संक्षेप में सिफारिश थी (1) IDISposable ऑब्जेक्ट्स का उपयोग न करें एकता या (2) एकता का उपयोग न करें। इसके बारे में, यह मुझे कुल 3 सिफारिशें देता है। –