के साथ एक चपटा संपत्ति के नाम पर आधारित संपत्ति मैं AutoMapper उपयोग कर रहा हूँ लगता है और मैं इसे मैप किया (चपटा) गंतव्य संपत्ति के नाम पर आधारित एक स्रोत संपत्ति वापस ट्रेस करने के लिए करना चाहते हैं।कैसे स्रोत AutoMapper
इसका कारण यह है मेरी MVC नियंत्रक एक मैप की गई संपत्ति है कि यह प्रयोजनों छँटाई के लिए है कि एक सेवा कॉल करने के लिए प्रदान करने की जरूरत के नाम पर है। सेवा को उस संपत्ति के नाम को जानने की आवश्यकता है जो मैपिंग से उत्पन्न होता है (और नियंत्रक इसे नहीं जानता है) ताकि वास्तव में डेटा को संग्रहीत करने वाले भंडार को उचित कॉल करने के लिए किया जा सके।
उदाहरण के लिए: [Destination.AddressZipCode]
फिर वापस करने के लिए
ट्रेस "AddressZipCode" करने के लिए
[Source.Address.ZipCode] नक्शे [Source.Address .ZipCode]
क्या यह कुछ वें है ऑटोमैपर पर मेरे लिए क्या कर सकता है या क्या मुझे ऑटोमैपर के मैपिंग डेटा में खुदाई करने का सहारा लेना है?
अद्यतन
जिमी Bogard मुझसे कहा था कि यह संभव होना चाहिए लेकिन एक स्पष्ट तरीके से नहीं। इसे टाइप मैप लोड करने और इसके माध्यम से जाने की आवश्यकता है। मैंने इसे संक्षेप में देखा है, लेकिन ऐसा लगता है कि रिवर्स मैपिंग करने के लिए आवश्यक संपत्ति मैपिंग जानकारी प्राप्त करने के लिए मुझे आंतरिक प्रकारों तक पहुंच की आवश्यकता है।
अद्यतन 2
मैं कुछ और जानकारी प्रदान करने के लिए तय कर लिया है।
- एक
AutoMapper.Internal.PropertyGetter
कि पता हो जाता है:जब मैं प्रकार नक्शा लोड, मैं अंतर्निहित ज़िपकोड मानचित्रण के लिए इसमें दो स्रोत मान रिसोल्वर देखते हैं कि लगता है।
AutoMapper.Internal.PropertyGetter
जो ज़िपकोड प्राप्त करता है।जब मैं एक स्पष्ट मानचित्रण (है कि एक लैम्ब्डा अभिव्यक्ति निर्दिष्ट है) है, मैं कोई स्रोत मूल्य समाधानकर्ता लेकिन एक कस्टम समाधानकर्ता लगता है:
- एक
AutoMapper.DelegateBasedResolver<Company,string>
मुझे लगता है कि मेरी स्पष्ट मानचित्रण लैम्ब्डा अभिव्यक्ति रखती है।दुर्भाग्य से इन रिसोल्वर आंतरिक हैं तो मैं केवल उन्हें प्रतिबिंब (जो मैं वास्तव में क्या करने के लिए नहीं करना चाहते हैं) के माध्यम से या AutoMapper स्रोत कोड को बदलने के द्वारा पहुँच सकते हैं।
यदि मैं उन्हें एक्सेस कर सकता हूं, तो मैं मूल्य रिज़ॉल्यूशन के माध्यम से या कस्टम रिज़ॉल्यूशन का निरीक्षण करके समस्या को हल कर सकता हूं, हालांकि मुझे संदेह है कि मुझे मैपिंग लैम्ब्डा अभिव्यक्ति पर वापस ले जाया जाएगा जिसे मुझे अवांछित संपत्ति बनाने की आवश्यकता है नाम (वास्तव में डॉट्स द्वारा अलग संपत्ति नामों की एक श्रृंखला)।
क्या आप फ्लैटिंग/unflattening के बारे में बात कर रहे हैं? – Omu
@ ओमु: हाँ, मैं इस अर्थ में हूं कि मैं संपत्ति के नाम को अनदेखा करना चाहता हूं, न कि पूरे ऑब्जेक्ट्स। मुझे लगता है कि आप ValueInjecter से संबद्ध हैं लेकिन मैं इस मामले में ऑटोमैपर क्षेत्र के भीतर रहना चाहता हूं। –
अच्छी तरह से, ऑटोमैपर ऐसा नहीं कर सकता है, लेकिन मैंने ऐसा किया जब ValueInjecter – Omu