.net - Why is AutoMapper only using my configuration on the first element in a list? -


यहां मेरा ऑटोमैपर कॉन्फ़िगरेशन है:

  मैपर.क्रेटमैप & lt; स्रोत, गंतव्य & gt; () .ConstructUsing (s = & gt; नया गंतव्य (दिनांकित दिनांक। डेटटाइम));   

दोनों वर्गों में एक एकल संपत्ति है, बनाया दिनांक , लेकिन ये विभिन्न प्रकार के हैं:

  सार्वजनिक वर्ग स्रोत {सार्वजनिक तिथि टाइम ऑफसेट बनाया गया {प्राप्त; सेट; }} सार्वजनिक वर्ग गंतव्य {सार्वजनिक गंतव्य (दिनांक समय बनाया गया) {निर्मित दिनांक = बनाया; } सार्वजनिक दिनांक समय बनाया गया {प्राप्त करें; सेट; }}   

यह कॉन्फ़िगरेशन ठीक काम करती है जब मैं किसी दूसरे के एक क्षणिक के बीच मैपिंग करता हूं, लेकिन जब मैं इन प्रकारों की संख्याओं के बीच में मैप करता हूं:

  var dests = Mapper.Map & lt; IEnumerable & lt; स्रोत & gt ;, गंतव्य [] & gt; (स्रोत);   

इस मामले में, ऑटोमैपर को पहले तत्व के मैप किए जाने के लिए गंतव्य कन्स्ट्रक्टर को कॉल करता है, लेकिन जाहिरा तौर पर ऑटो-मैप को प्राप्त होता है शेष तत्व स्वत: मैपिंग एक अपवाद फेंकता है क्योंकि समान रूप से नामित निर्मित दिनांक गुण विभिन्न प्रकार के होते हैं।

अगर मैं किसी एक गुण का नाम बदलता हूं - कहते हैं, गंतव्य । क्रिएट किया गया - कन्स्ट्रक्टर को सभी तत्वों पर बुलाया जाता है जैसा कि आप चाहते हैं।

मैं ऑटोमैपर का नवीनतम संस्करण (v1.1.0.188) का उपयोग कर रहा हूं। ऐसा लगता है कि यह एक बग होना चाहिए, लेकिन शायद मैंने कुछ अनदेखा किया है?

आप चाहते हैं एक अलग दृष्टिकोण की कोशिश करो मैं कोशिश करूंगा:

  मैपर। क्रेटमैप & lt; स्रोत, गंतव्य & gt; () .एमएमएमएम (डी = & gt; डी। क्रेडिटेड डेट, ऑप्ट = & gt; opt.MapFrom (s = & gt; s.CreatedDate ।दिनांक समय));   

मानचित्रण थोड़ा अधिक वर्बोज़ है लेकिन इसे प्रत्येक तत्व के लिए ठीक से संभालना चाहिए। इतना ही नहीं, लेकिन अब आप अपने गंतव्य वर्ग पर अनावश्यक निर्माता को हटा सकते हैं।

Comments