2016-02-13 6 views
7

के बिना एप्लिकेशन पर ऑटोमैपर v4.2 को कॉन्फ़िगर करना मैं पुराने स्टेटिक ऑटोमैपर एपीआई से this resource के अनुसार काम करने के नए तरीके से माइग्रेट करने का प्रयास कर रहा हूं।स्टेटिक एपीआई

हालांकि, मैं थोड़ा उलझन में हूं कि मुझे Startup.cs/Global.asax जैसी फ़ाइल में ऑटोमैपर को कैसे कॉन्फ़िगर करना चाहिए।

इस तरह कुछ करने के लिए पुराने तरीके से किया गया था:

Mapper.Initialize(cfg => { 
    cfg.CreateMap<Source, Dest>(); 
}); 

तो कोड भर कहीं भी मैं बस सिर्फ कर सकता है:

var dest = Mapper.Map<Source, Dest>(source); 

अब नए संस्करण ऐसा लगता है कि वहाँ कोई साथ एप्लिकेशन स्टार्ट पर ऑटोमैपर शुरू करने का तरीका और फिर इसे नियंत्रक में उपयोग करें। एक ही रास्ता मैं पता लगा है कि कैसे यह इतना तरह नियंत्रक में सब कुछ कर रही है करने के लिए:

var config = new MapperConfiguration(cfg => { 
    cfg.CreateMap<Source, Dest>(); 
}); 

IMapper mapper = config.CreateMapper(); 
var source = new Source(); 
var dest = mapper.Map<Source, Dest>(source); 

मैं वास्तव में AutoMapper हर बार मैं में मेरी MVC नियंत्रकों में अब इसका इस्तेमाल या कहीं और कॉन्फ़िगर करने के लिए है मेरी आवेदन? हां, प्रलेखन आपको दिखाता है कि इसे नए तरीके से कैसे कॉन्फ़िगर किया जाए, लेकिन वे इसे कॉन्फ़िगर नामक चर पर सेट कर रहे हैं जो मेरे पूरे ऐप के आसपास काम नहीं कर सकता है।

मुझे स्थिर महसूस रखने पर this documentation मिला। लेकिन मैं थोड़ा उलझन में हूं कि MyAplication.Mapper क्या है और मुझे इसे कहां घोषित करना चाहिए। यह एक वैश्विक अनुप्रयोग संपत्ति की तरह लगता है।

उत्तर

10

आप ऐसा कुछ कर सकते हैं।
1.) एक स्थिर वर्ग प्रकार MapperConfiguration

public static class AutoMapperConfig 
{ 
    public static MapperConfiguration MapperConfiguration; 

    public static void RegisterMappings() 
    { 
     MapperConfiguration = new MapperConfiguration(cfg => { 
      cfg.CreateMap<Source, Dest>().ReverseMap(); 
     }); 
    } 
} 

2.) Global.asax की Application_Start में की एक विशेषता है कि RegisterMapping विधि

AutoMapperConfig.RegisterMappings(); 

3.) बनाएँ, फोन में अपने नियंत्रक, मैपर बनाएँ।

IMapper Mapper = AutoMapperConfig.MapperConfiguration.CreateMapper(); 
Mapper.Map<Dest>(source); 
+0

ऑटोमैपर कॉनफिग क्लास में एक स्थिर कंस्ट्रक्टर जोड़ने और रजिस्टर मैपिंग को कॉल करने के बारे में क्या? – costa

+0

यदि आपको एक से अधिक मैपिंग करने की आवश्यकता है तो क्या खुशी होगी? आपको एक से अधिक सार्वजनिक स्थिर मैपर कॉन्फ़िगरेशन मैपर कॉन्फ़िगरेशन बनाना होगा; ? – Diego

संबंधित मुद्दे