नीचे दिए गए कोड पर विचार करें (जिसे सरलीकृत किया गया है)। मेरे पास एक सेवा वर्ग है जो विशिष्ट डीटीओ ऑब्जेक्ट्स की एक सूची देता है जो प्रत्येक अपने विशिष्ट इंटरफ़ेस को लागू करता है। वास्तविक कोड में ये डेटासेट के माध्यम से पुन: उत्पन्न हो रहे हैं क्योंकि मैं विरासत कोड के साथ काम कर रहा हूं।निर्भरता इंजेक्शन - डेटा ट्रांसफर ऑब्जेक्ट्स (डीटीओ) के साथ उपयोग करें?
सवाल:
हम कैसे/Newing के बिना एक डीटीओ का उपयोग बना सकता हूँ उन्हें या सेवा लोकेटर विरोधी पैटर्न का उपयोग कर? यह संरचना रूट में एक खाली डीटीओ ऑब्जेक्ट लिखने और इसे कन्स्ट्रक्टर के माध्यम से सेवा कक्षा में इंजेक्ट करने के लिए ज्यादा समझ में नहीं आता है, क्योंकि मैं वास्तव में सूची को पॉप्युलेट करते समय डीटीओ का अस्थायी चर के रूप में उपयोग कर रहा हूं।
कोड में आप डीटीओ को नए बनाने का एक उदाहरण देख सकते हैं। लेकिन अगर मैंने डीटीओ को पहले स्थान पर इंटरफेस लागू नहीं किया है तो इससे बेहतर अधिक महसूस नहीं होता है। तो क्या उन्हें इंटरफेस लागू नहीं करना चाहिए और इस प्रकार, डीटीओ के साथ डीआई का उपयोग नहीं करना चाहिए?
public class Services : IServices
{
public IList<IDTO> GetDTOs()
{
...
List<IDTO> dtos = new List<IDTO>();
foreach (c in d)
{
DTO dto = new DTO();
dto.x = c.x;
dto.y = c.y;
dto.z = c.z;
dtos.Add(dto);
}
return dtos;
}
}
संबंधित: http://stackoverflow.com/questions अपने उदाहरण के मामले में (जहाँ मैं नाममात्र प्रकार आदेश की वस्तु "से" बनाया है)/4835046/क्यों-नहीं-उपयोग-ए-आईओसी-कंटेनर-टू-रेज़ोल्यूशन-निर्भरता-संस्थाओं के लिए-व्यवसाय-ओब्जेक –
दिलचस्प उत्तरों के साथ डुप्लिकेट: http://stackoverflow.com/questions/8135894/c-sharp- डीटीओ-कन्स्ट्रक्टर-एंड-निर्भरता-इंजेक्शन/8136059 # 8136059 –