मैं अक्सर मॉडल (डोमेन) मैप करने के लिए ViewModel वस्तुओं, जो तब मेरी दृश्य द्वारा खपत होती है करने के लिए वस्तुओं एक मॉडल/देखें/ViewModel पैटर्न में, AutoMapper का उपयोग करें।'CreateMap' कथन कहां जाना चाहिए?
इसमें कई 'Mapper.CreateMap' कथन शामिल हैं, जिन्हें सभी को निष्पादित किया जाना चाहिए, लेकिन आवेदन के जीवन चक्र में केवल को निष्पादित किया जाना चाहिए।
तकनीकी रूप से, तो, मुझे उन्हें सभी को एक स्थिर विधि में रखना चाहिए, जिसे मेरी एप्लिकेशन_स्टार्ट() विधि से कहा जाता है (यह एक एएसपी.नेट एमवीसी एप्लीकेशन है)।
हालांकि, यह एक केंद्रीय स्थान में विभिन्न मानचित्रण चिंताओं का एक बहुत एक साथ समूह में गलत लगता है।
खासकर जब मानचित्रण कोड जटिल हो जाता है और स्वरूपण और अन्य तर्क शामिल है।
वहाँ मानचित्रण कोड इतना है कि यह ViewModel कि यह चिंताओं के पास रखा जाता है व्यवस्थित करने के लिए एक बेहतर तरीका है?
(मैं एक विचार के साथ आया था - प्रत्येक ViewModel पर एक 'CreateMappings' विधि है, और BaseViewModel में, इन्स्टेन्शियशन पर इस विधि बुला हालांकि, बाद से विधि केवल एक बार आवेदन जीवन चक्र में बुलाया जाना चाहिए,। ViewModel प्रकारों की एक सूची को कैश करने के लिए इसे कुछ अतिरिक्त तर्क की आवश्यकता है जिसके लिए CreateMappings विधि को कॉल किया गया है, और फिर केवल उस समय कॉलमोडल्स के लिए इसे कॉल करें, जो उस सूची में नहीं हैं।)
लेकिन वह अभी भी सभी अलग दृष्टिकोण मॉडल एक साथ lumped के लिए सभी मैपिंग होने की समस्या का समाधान नहीं होता है, जब मैं नहीं बल्कि होगा वे किसी भी तरह से उन कक्षाओं से संबंधित हैं जो वे लागू होते हैं। – Jonathan