2011-02-07 17 views
5

में सरणी प्रकारों को हल करना क्या एकता कंटेनर में सरणी प्रकारों को पंजीकृत और हल करना संभव है? मैं इस तरह कुछ करने के लिए करना चाहते हैं:एकता (प्रिज्म) कंटेनर

this.mContainer 
    .RegisterType<ISomeType, SomeType>() 
    .RegisterType<ISomeType[], SomeType[]>(); 
ISomeType[] lSomeTypes = this.mContainer.Resolve<ISomeType[6]>(); 

यह और भी बेहतर हो सकता है अगर मैं सरणी प्रकार दर्ज करना नहीं था, और एकता RegisterType<ISomeType, SomeType>() और Resolve<ISomeType[]>() अकेले के आधार पर सरणी यह ​​पता लगाने की है।

+0

कुछ दस्तावेज मिला, लेकिन यह बहुत स्पष्ट नहीं था ... http://msdn.microsoft.com/en-us/library/ff660882%28v=pandp.20%29.aspx#_Toc260122621 –

उत्तर

7

यदि आप किसी विशेष प्रकार (नामांकित पंजीकरण का उपयोग करके) के लिए एकाधिक प्रकार पंजीकृत करते हैं, तो जब कंटेनर उस प्रकार की सरणी पर निर्भरता देखता है, तो यह स्वचालित रूप से सभी नामांकित पंजीकरणों को इंजेक्ट करेगा।

तो यह काम करेगा:

this.mContainer 
    .RegisterType<ISomeType, SomeImpl1>("one") 
    .RegisterType<ISomeType, SomeOtherImpl>("other") 
    .RegisterType,ISomeType, AnotherImpl>("another"); 

ISomeType[] someTypes = mContainer.Resolve<ISomeType[]>(); 

इस तर्क जब भी ISomeType [] के एक निर्भरता है में शुरू होगा - निर्माता पैरामीटर, इंजेक्शन संपत्ति, आदि

ध्यान दें कि सरणी इंजेक्शन केवल इंजेक्षन जाएगा नाम पंजीकरण। डिफ़ॉल्ट, अनाम नाम पंजीकरण सरणी में शामिल नहीं है।

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