2017-01-19 5 views
8

स्रोतों में comment है TryAdd संस्करण सेवा को जोड़ता नहीं है यदि यह पहले से ही IServiceCollection में पंजीकृत है। लेकिन दस्तावेज़ इस विधि का जिक्र नहीं करते हैं। जब इसका उपयोग किया जाना चाहिए?AspNet Core DI: TryAdd बनाम उपयोग जोड़ें

उत्तर

13

आमतौर पर यदि आपके पास निर्भरता वाले पुस्तकालय हैं तो आप IServiceCollection का एक विस्तार विधि तैयार करेंगे कि आपके लाइब्रेरी का उपभोक्ता डिफ़ॉल्ट निर्भरताओं को तार करने के लिए स्टार्टअप से कॉल करेगा।

.TryAdd आपके विस्तार विधि के अंदर उपयोगी है जब इंटरफ़ेस का केवल एक कार्यान्वयन किया जाना चाहिए। फिर यदि कोई डिफ़ॉल्ट कार्यान्वयन ओवरराइड करना चाहता है तो वे को से पहले अपनी विस्तार विधि को कॉल कर सकते हैं और चूंकि उनका कार्यान्वयन पहले पंजीकृत है, TryAdd कुछ भी नहीं जोड़ देगा।

यदि आपके विस्तार विधि में उपयोग किया जाता है, तो कोई भी के बाद अपने कार्यान्वयन विधि को कॉल करके अपने कार्यान्वयन को पंजीकृत करके डिफ़ॉल्ट कार्यान्वयन को ओवरराइड कर सकता है। लेकिन इस मामले में अभी भी कई कार्यान्वयन पंजीकृत हैं, इसलिए कोई भी आईफू के आईनेमरेबल पर निर्भरता ले सकता है और पंजीकृत सभी कार्यान्वयन प्राप्त कर सकता है। लेकिन अगर वे IFoo पर निर्भरता लेते हैं तो उन्हें केवल एक डिफ़ॉल्ट यानी अंतिम जोड़ा जाता है।

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