2012-02-17 19 views
17

मैं ऑब्जेक्ट्स को मैप करने के लिए ऑटोमैपर का उपयोग करने की कोशिश कर रहा हूं, समस्या उन वस्तुओं में से एक है जिन्हें मैं मानचित्र बनाने का प्रयास कर रहा हूं, इसके सभी गुणों के सामने एक उपसर्ग 'कस्ट_' है और कोई नहीं। क्या इस मानचित्रण को बनाने का कोई तरीका है।उपसर्ग के साथ ऑटोमैपर

उदाहरण के लिए कहते हैं कि मैं

class A 
{ 
     String FirstName { get; set; } 
     String LastName { get; set; } 
} 

class B 
{ 
     String Cust_FirstName { get; set; } 
     String Cust_LastName { get; set; } 
} 

जाहिर है इस नक्शे

AutoMapper.Mapper.CreateMap<A, B>(); 
b = AutoMapper.Mapper.Map<A, B>(a); 

उत्तर

22
Mapper.Initialize(cfg => 
{ 
    cfg.RecognizeDestinationPrefixes("Cust_"); 
    cfg.CreateMap<A, B>(); 
}); 

A a = new A() {FirstName = "Cliff", LastName = "Mayson"}; 
B b = Mapper.Map<A, B>(a); 

//b.Cust_FirstName is "Cliff" 
//b.Cust_LastName is "Mayson" 

या वैकल्पिक रूप से काम नहीं करेगा:

Mapper.Configuration.RecognizeDestinationPrefixes("Cust_"); 
Mapper.CreateMap<A, B>(); 
... 
B b = Mapper.Map<A, B>(a); 
... 
+2

चीयर्स दोनों तरीकों पूरी तरह से काम: डिफ़ॉल्ट रूप से AutoMapper उपसर्ग पहचानता आप उपसर्ग स्पष्ट करने की जरूरत है "जाओ",। हालांकि दोनों विधि वास्तविक मानचित्र ए से बी के लिए विशिष्ट नहीं लगती हैं, लेकिन वास्तव में किसी अन्य मैपिंग को ए से सी –

+0

@ क्लाइफमेसन कहते हैं लेकिन मुझे नहीं लगता कि यह समस्याग्रस्त है, खासकर उस मामले में जहां आपके पास एकाधिक हैं एक ही सम्मेलन के बाद लक्षित कक्षाएं। ऐसे मामले में जहां आपको वास्तव में अलग-अलग कॉन्फ़िगरेशन की आवश्यकता होती है, उदाहरण के लिए, जहां आपको दो कक्षाओं को मैप करने के लिए अलग तर्क होना आवश्यक है, आप हमेशा अपने स्वयं के कॉन्फ़िगरेशन के साथ समर्पित 'मैपिंगइंजिन' बना सकते हैं। HTH। –

0

प्रलेखन Recognizing pre/postfixes पर एक लेख है

कभी-कभी आपके स्रोत/गंतव्य गुणों में सामान्य प्री/पोस्टफिक्सेस होंगे जो आपको कस्टम सदस्य मैपिंग का एक गुच्छा करना होगा क्योंकि नाम मेल नहीं खाते हैं। इसका पता लगाने के लिए, आपको पूर्व/postfixes को पहचान सकते हैं:

public class Source { 
    public int frmValue { get; set; } 
    public int frmValue2 { get; set; } 
} 
public class Dest { 
    public int Value { get; set; } 
    public int Value2 { get; set; } 
} 
Mapper.Initialize(cfg => { 
    cfg.RecognizePrefix("frm"); 
    cfg.CreateMap<Source, Dest>(); 
}); 

Mapper.AssertConfigurationIsValid();

Mapper.Initialize(cfg => { 
    cfg.ClearPrefixes(); 
    cfg.RecognizePrefixes("tmp"); 
}); 
संबंधित मुद्दे