2017-08-09 14 views

उत्तर

28

आपको शायद ही कभी इन विधियों को कॉल करना होगा, क्योंकि आपको कभी भी जहां संभव हो वहां कन्स्ट्रक्टर इंजेक्शन का उपयोग करना चाहिए।

दुर्लभ मामलों में, जैसे कारखानों या गतिशील रूप से कमांड हैंडलर को तुरंत चालू करने के लिए, आप इसे स्वयं हल कर सकते हैं।

कहा जा रहा है, तो आप GetRequiredService का उपयोग करना चाहिए जहां सेवा की आवश्यकता होती है । जब सेवा पंजीकृत नहीं होती है, तो यह अपवाद फेंक देगा।

दूसरी तरफ GetServiceवैकल्पिक निर्भरता, जो सिर्फ वापस आ जाएगी null जब ऐसी कोई पंजीकृत सेवा है के लिए है।

+0

आपको ध्यान रखना चाहिए कि यदि आप बाहरी डी प्रदाता का उपयोग कर रहे हैं, तो यह अर्थशास्त्र थोड़ा बदल सकता है, उदाहरण के लिए, स्ट्रक्चर मैप में दोनों कार्य अलग-अलग व्यवहार करते हैं: https://github.com/structuremap/StructureMap.Microsoft.DependencyInjection/issues/37 – rekiem87

11

अंतर यह है कि GetService<T>()null देता है यदि यह सेवा नहीं मिल रहा है। GetRequiredService<T>() इसके बजाय InvalidOperationException फेंकता है।

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