में गायब सदस्य ऑटोमैपर 2.0 में मैंने मैपिंग को कॉन्फ़िगर करने के लिए प्रोफाइल का उपयोग किया। मैं अपने स्रोत और गंतव्य संपत्ति नामों से मेल खाने के लिए SourceMemberNameTransformer
और DestinationMemberNameTransformer
का उपयोग करता हूं।ऑटोमैपर 2.1.265
2.1.265 में ये गुण अब प्रोफ़ाइल पर नहीं हैं। क्या किसी को पता है कि उन्हें क्यों हटा दिया गया था? लेकिन सबसे महत्वपूर्ण बात यह है कि मैं इस कार्यक्षमता को कैसे डुप्लिकेट कर सकता हूं।
संपादित
मैं SourceMemberNamingConvention
और DestinationMemberNamingConvention
को देखकर किया गया है, लेकिन मैं कैसे उन काम करने के लिए के रूप में किसी भी प्रलेखन नहीं मिल रहा। क्या किसी को कस्टम INamingConvention
का उपयोग करने का अनुभव है?
संपादित 2
स्रोत के सदस्यों को एक 3 पार्टी डेटाबेस से उत्पन्न कर रहे हैं। आम तौर पर वे शब्दों के बीच अंडरस्कोर के साथ सभी लोअरकेस कॉलम नामों का उपयोग करते हैं। कभी-कभी वे अंडरस्कोर छोड़ देते हैं, कभी-कभी वे यादृच्छिक पूंजीकरण में फेंक देते हैं।
गंतव्य सदस्य जितना संभव हो सके .NET नामकरण सम्मेलनों का पालन करने का प्रयास करते हैं। अंडरस्कोर हटा दिए गए थे, अंडरस्कोर के बाद पहला अक्षर पूंजीकृत था। सदस्य नामों को पढ़ने में आसान बनाने के लिए अतिरिक्त केस परिवर्तन किए गए थे।
इस का समाधान करने के लिए, मैं भविष्य के लोगों के लिए
SourceMemberNameTransformer = name => name.Replace("_", "").ToUpper()
DestinationMemberNameTransformer = name => name.ToUpper()
संपादित 3
अधिक जानकारी निर्धारित किया है।
मैंने स्रोत का निरीक्षण किया कि INamingConvention
का उपयोग कैसे किया जाता है। जिस तरह से इसे थोड़ा भ्रामक बनाया गया है। इंटरफेस के रूप में
public interface INamingConvention
{
Regex SplittingExpression { get; }
string SeparatorCharacter { get; }
}
हालांकि befined है, AutoMapper उपयोगकर्ता नहीं दोनों SourceMemberNamingConvention
और DestinationMemberNamingConvention
यह गंतव्य प्रकार के प्रत्येक सदस्य को ले जाता है और DestinationMemberNamingConvention.SplittingExpression
लागू होता है के लिए इंटरफ़ेस की पूरी परिभाषा है। फिर यह उन मिलान भागों को लेता है और SourceMemberNamingConvention.SeparatorCharacter
का उपयोग करके string.Join
पर कॉल करता है। इसके बाद स्रोत प्रकार के सदस्यों को गंतव्य प्रकार के सदस्यों से मिलान करने का प्रयास किया जाता है।
यह क्या है और यह पूर्ण कार्यक्षमता का वर्णन करने का प्रयास नहीं है, यह एक बहुत ही उच्च स्तर का अवलोकन है। यह केवल यह दिखाने के लिए है कि कैसे INamingConvention
का उपयोग किया जाता है और यह दिखाने के लिए कि SourceMemberNamingConvention.SplittingExpression
और DestinationMemberNamingConvention.SeparatorCharacter
का उपयोग कभी नहीं किया जाता है।
यदि आप इस रणनीति का उपयोग कर गंतव्य सदस्यों को बदलने में असमर्थ हैं, तो आपको गुणों को मैन्युअल रूप से nemesv's answer सुझावों के रूप में चिह्नित करना होगा।
हां, मैंने पहले ही इसे देखा है। यह मेरी मदद नहीं करता क्योंकि मैं उपसर्ग या पोस्टफिक्सेस के साथ कुछ भी नहीं करता हूं। – cadrell0
क्या आप एक उदाहरण प्रदान कर सकते हैं जो दिखाता है कि आप क्या हासिल करने की कोशिश कर रहे हैं? – nemesv
मैंने प्रश्न – cadrell0