2012-08-31 18 views
7

में एक शून्य उदाहरण कैसे जमा कर सकता हूं मैं एक एसयूटी कारखाने के रूप में ऑटोफिक्चर का उपयोग कर रहा हूं और मुझे शून्य उदाहरणों को फ्रीज करने में कठिनाई हो रही है।मैं ऑटोफिक्चर

मैं की तरह कुछ करने के लिए करना चाहते हैं:

_fixture.Freeze<IPayPalConfiguration>(c => null); 

लेकिन जल्दी से पता चला है कि गलत था। मैं इस का उपयोग कर समस्या को हल काम किया है:

_fixture.Inject((IMyInterface)null); 

लेकिन यह सही नहीं लगता है।

उम्मीद है कि कोई व्यक्ति हाइवमाइंड के सही समाधान का योगदान देगा।

उत्तर

6

आंतरिक रूप से, Freeze का अनुरोध प्रकार (उदा IPayPalConfiguration) का एक उदाहरण बनाता है और फिर injects यह तो वह हमेशा कि उदाहरण वापस आ जाएगी जब आप इसे फिर से अनुरोध करते हैं।

उस विशेष मामले में, _fixture.Inject((IPayPalConfiguration)null) करके आप मैन्युअल रूप से शून्य संदर्भ इंजेक्ट करते हैं ताकि आप Freeze विधि के निर्माण भाग को छोड़ दें। IPayPalConfiguration को एक ही मान (वास्तव में, यहां एक शून्य संदर्भ) पर फ्रीज करें लेकिन मैन्युअल तरीके से फ्रीज करें।

ध्यान रखें कि इस _fixture.Freeze<IPayPalConfiguration>(c => null)विधि कि IPayPalConfiguration और यही कारण है एक ArgumentNullException फेंक दिया जाता है के लिए हल करने की कोशिश करेंगे के लिए एक अशक्त संदर्भ गुजरता है।

+0

प्रतिक्रिया के लिए धन्यवाद, और कम से कम पुष्टि कि मैं गलत काम नहीं कर रहा हूं –