2012-12-06 10 views
8

में हार्ड कोडित मान पास Simple Injector में मैं निम्न कर सकते हैं:सरल इंजेक्टर निर्माता

container.RegisterSingle<IAuctionContext>(() => new AuctionContext(
    new Uri("http://localhost:60001/AuctionDataService.svc/"))); 

क्या मैं यहाँ कर रहा हूँ कह रहा है कि जब IAuctionContext पाया जाता है, यह इस नए AuctionContext के साथ बदलें। समस्या यह है कि RegisterSingle पर कॉल के साथ, AuctionContext का केवल एक ही उदाहरण उपयोग किया जाएगा। मैं इसे Uri पैरामीटर में उपरोक्त के रूप में पास करने में सक्षम होना चाहता हूं लेकिन एक ही उदाहरण नहीं है लेकिन हर बार एक नया उदाहरण देता है।

यह कैसे संभव है?

+0

मैंने आपके प्रश्न को संपादित किया है और प्रति http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be-removed-from-posts पर अपना हस्ताक्षर हटा दिया है। हस्ताक्षर का उपयोग करने से बचें। =) –

+0

अगली बार धन्यवाद, मैं इसे ध्यान में रखूंगा। –

उत्तर

18

जिस मूल्य को आप इंजेक्ट करने का प्रयास कर रहे हैं वह एक साधारण हार्ड-कोडेड मान है।

var uri = new Uri("http://localhost:60001/AuctionDataService.svc/"); 

container.Register<IAuctionContext>(() => new AuctionContext(uri)); 

Register विधि सुनिश्चित करता है एक नया उदाहरण हर बार दिया जाता है: हार्ड-कोडेड मूल्यों और कॉन्फ़िगरेशन मान की तरह निरंतर मूल्यों के लिए, बस Register विधि का उपयोग करें।

जब आवेदन के दौरान बदल सकते मूल्यों को इंजेक्शन देने की बात आती है, तो कृपया this article about injecting runtime data पढ़ें।

संबंधित मुद्दे