2009-05-17 13 views
6

महल विंडसर के साथ स्वत: पंजीकरण का उपयोग करते समय मैं देख रहा हूँ लोग मुझे के जीवन के लिए की तरहकैसल विंडसर फ्लुएंट पंजीकरण - क्या उठाता है() करते हैं?

_container.Register(
    AllTypes.Pick().FromAssembly(Assembly.GetExecutingAssembly()) 
    .WithService.FirstInterface()); 

काम करने मैं समझ नहीं क्या पिक() विधि है और न ही मैं किसी भी प्रलेखन पा सकते हैं। क्या कोई इसे मुझे समझा सकता है?

उत्तर

9

Pick(IEnumerable<Type>)is a synonym forFrom(IEnumerable<Type>), यानी यह निर्दिष्ट प्रकारों को पंजीकरण लक्ष्यों के रूप में चुनता है।

AllTypes.Pick()is the same asAllTypes.Of<object>(), इसलिए यह प्रभावी ढंग से सभी प्रकारों का चयन करता है।

AllTypes.Pick().FromAssembly(Assembly.GetExecutingAssembly()) क्रियान्वित विधानसभा में सभी प्रकार का चयन (आप तो निश्चित रूप से फ़िल्टर कर सकते हैं,)

हमेशा की तरह, और जानकारी के लिए fluent API wiki और/या test case पर एक नज़र ले जाएगा।

+1

मौश - क्या आपने फ्लैंट इंटरफेस के बारे में कैसल दस्तावेज़ों में योगदान देने के बारे में सोचा है? यह पहला सवाल नहीं है जैसा आप जवाब देते हैं। –

+0

मैं इसे –

2

यह इस धाराप्रवाह एपीआई में शुरुआती बिंदु है कि किस प्रकार के कंटेनर में स्वचालित रूप से पंजीकृत हो जाएगा।

Container.Register(
     AllTypes.Pick() 
     .FromAssemblyNamed("MyAssembly") 
     .If(t => t.Name.EndsWith("ABC")) 
     .Configure(c => c.LifeStyle.Is(LifestyleType.Transient)) 
     .WithService.Select(i => typeof(I)) 
    ); 

इस उदाहरण सभी प्रकार MyAssembly से उठाया नाम के साथ समाप्त होने के साथ में "एबीसी" कंटेनर के लिए क्षणिक जीवन शैली के साथ टाइप I उदाहरण this question से आता है की सेवाओं के रूप में जोड़ दिया जाएगा।

यह आंतरिक डीएसएल के रूप में एक घोषणात्मक दृष्टिकोण है। इस तरह के एपीआई के साथ, विधियों का उपयोग उस व्यवहार को कॉन्फ़िगर करने के लिए किया जाता है जिसे बाद में निष्पादित किया जाएगा। इसे प्राप्त करने के लिए, विधियों को कॉन्फ़िगरेशन के चरणों के माध्यम से मार्गदर्शन करने वाले बिल्डर्स लौटाते हैं, जबकि वास्तविक कार्य अंत में किया जाता है।

+0

का प्रयास करूंगा समस्या यह है कि उपरोक्त उदाहरण में ऐसा लगता है कि AllTypes.Pick() से .Assembly नामांकित (...)। अगर (..) आप छोटे और अधिक मानकीकृत कर सकते हैं AllTypes.FromAssemblyNamed (...)। कहाँ (..) –

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