वर्गों को देखते हुए:
सार्वजनिक वर्ग व्यक्ति {सार्वजनिक स्ट्रिंग नाम {get; सेट; }} पब्लिक क्लास स्टूडेंट: पर्सन {पब्लिक इन्ट विद्यार्थी इडी {get; सेट; }} सार्वजनिक वर्ग स्रोत {सार्वजनिक व्यक्ति की व्यक्ति} सेट; }} सार्वजनिक वर्ग गंतव्य {सार्वजनिक स्ट्रिंग personName {get; सेट; } सार्वजनिक int? PersonStudentId {प्राप्त करें; सेट; }}
मैं स्रोत -> नष्ट करने के लिए ऑटोमैपर का उपयोग करना चाहता हूं।
यह परीक्षण स्पष्ट रूप से विफल रहता है:
मैपर। क्रिएटमैप & lt ; स्रोत, डेस्ट & gt; (); Var स्रोत = नया स्रोत () {व्यक्ति = नया छात्र () {नाम = "जे", छात्रआईडी = 5}}; Var dest = Mapper.Map & lt; स्रोत, गंतव्य & gt; (स्रोत); असाधारण। (5, dest.PersonStudentId);
मैपिंग के लिए सबसे अच्छा तरीका यह होगा कि "व्यक्ति" वास्तव में हमारे डोमेन मॉडल में बहुत अधिक इस्तेमाल किया डेटा प्रकार है।
संपादित करें: इरादा "डेस्ट" ऑब्जेक्ट्स को जारी रखने के लिए है, जो उप-प्रकार के "पर्सन" के सभी गुणों के लिए परिभाषित होंगे। इसलिए हम निम्नलिखित स्रोतों की तरह स्रोत वस्तुएं प्राप्त कर सकते हैं और "व्यक्ति" उप-वर्गों के हर संभव संयोजन के लिए डेस्ट ऑब्जेक्ट बनाने के लिए नहीं करना पसंद करेंगे:
सार्वजनिक वर्ग स्रोत 2 {सार्वजनिक व्यक्ति मान 1} ; सेट; } सार्वजनिक व्यक्ति मूल्य 2 {प्राप्त; सेट; } सार्वजनिक व्यक्ति मान 3 {प्राप्त; सेट; } सार्वजनिक व्यक्ति मान 4 {प्राप्त; सेट; } सार्वजनिक व्यक्ति मान 5 {प्राप्त; सेट; जिमी के सुझाव का उपयोग करते हुए मैंने निम्न समाधान पर बसा है:
P>
सार्वजनिक वर्ग व्यक्ति {सार्वजनिक स्ट्रिंग नाम {get; सेट; }} पब्लिक क्लास स्टूडेंट: पर्सन {पब्लिक इन्ट विद्यार्थी इडी {get; सेट; }} // व्यक्ति के सभी उपप्रकार इस डीटीओ सार्वजनिक वर्ग के व्यक्ति के लिए मानचित्र करेंगे {सार्वजनिक स्ट्रिंग नाम {get; सेट; } सार्वजनिक int? छात्र आईडी {प्राप्त करें; सेट; }} सार्वजनिक वर्ग स्रोत {सार्वजनिक व्यक्ति की व्यक्ति} सेट; }} सार्वजनिक वर्ग DestDto {सार्वजनिक व्यक्ति व्यक्ति (प्राप्त करें; सेट; }} सार्वजनिक वर्ग गंतव्य {सार्वजनिक स्ट्रिंग personName {get; सेट; } सार्वजनिक int? PersonStudentId {प्राप्त करें; सेट; }} [टेस्टफाईएक्ट] पब्लिक क्लास रैंडमटेस्ट्स {[टेस्ट] सार्वजनिक शून्य टेस्ट 1 () {मॅपर। क्रिएटैप और लेफ्टिनेंट; व्यक्ति, व्यक्तिदत्त & gt; (); मॅपर। क्रिएटमैप & lt; छात्र, व्यक्तिदंड & gt; (); मैपर। क्रिएटमैप & lt; स्रोत, डेस्टडेटा & gt; (); मैपर.क्रेटमैप & lt; DestDto, Dest & gt; (); Var स्रोत = नया स्रोत () {व्यक्ति = नया छात्र () {नाम = "जे", छात्रआईडी = 5}}; Var destDto = मैपर। मैप & lt; स्रोत, DestDto & gt; (स्रोत); Var destFinal = मैपर। मैप & lt; DestDto, Dest & gt; (destDto); आश्वस्त करें। एरेक्वाल्ल (5, डिस्टफायल। पार्सेंट स्टूडेंट आईडी); }}
सुझाव / सुधार सुनना पसंद करेंगे।
Comments
Post a Comment