कपल्ड (निर्भर) ऑब्जेक्ट्स को डिकपल्ड (स्वतंत्र) ऑब्जेक्ट्स में बदलने की प्रक्रिया को डिपेंडेंसी इंजेक्शन (DI) कहा जाता है।
डिपेंडेंसी इंजेक्शन के प्रकार
- कंस्ट्रक्टर इंजेक्शन
- सेटर इंजेक्शन
- इंटरफेस-आधारित इंजेक्शन
- सर्विस लोकेटर इंजेक्शन
इंटरफेस इंजेक्शन
इंटरफेस इंजेक्शन गेटर और सेटर DI के समान है, लेकिन गेटर/सेटर DI डिफ़ॉल्ट गेटर और सेटर का उपयोग करते हैं, जबकि इंटरफेस इंजेक्शन एक सपोर्ट इंटरफेस का उपयोग करता है - एक तरह का एक्सप्लिसिट गेटर और सेटर जो इंटरफेस प्रॉपर्टी को सेट करता है।
उदाहरण
public interface IService
{
string ServiceMethod();
}
public class ClaimService : IService
{
public string ServiceMethod()
{
return "ClaimService is running";
}
}
public class AdjudicationService : IService
{
public string ServiceMethod()
{
return "AdjudicationService is running";
}
}
interface ISetService
{
void SetServiceRunService(IService client);
}
public class BusinessLogicImplementationInterfaceDI : ISetService
{
IService _client1;
public void SetServiceRunService(IService client)
{
_client1 = client;
Console.WriteLine("Interface Injection ==> Current Service : {0}", _client1.ServiceMethod());
}
}
उपयोग (Consuming)
BusinessLogicImplementationInterfaceDI objInterfaceDI = new BusinessLogicImplementationInterfaceDI();
IService serviceObj = new ClaimService(); // या AdjudicationService
objInterfaceDI.SetServiceRunService(serviceObj);
मुख्य बिंदु
- इंटरफेस
ISetServiceइंजेक्शन कॉन्ट्रैक्ट को परिभाषित करता है - क्लास
BusinessLogicImplementationInterfaceDIइस इंटरफेस को लागू करती है - रनटाइम पर किसी भी
IServiceकार्यान्वयन को इंजेक्ट किया जा सकता है - यह लोचशीलता प्रदान करता है लेकिन जटिलता बढ़ाता है
नोट: मूल कोड में कंज्यूमिंग सेक्शन में त्रुटि थी (objInterfaceDI = new ClaimService() गलत है)। सही संस्करण ऊपर दिखाया गया है।