2012-06-29 2 views
15

मेरे पास दो वर्ग (एमवीसी व्यू मॉडल) हैं जो एक सार आधार वर्ग से प्राप्त होते हैं।बेस क्लास के साथ ऑटोमैपर और कार्यान्वयन के लिए विभिन्न कॉन्फ़िगरेशन विकल्प

abstract class BaseModel { } 

class Car : BaseModel 
{ 
    public string Speed { get; set; } 
} 

class Camper : BaseModel 
{ 
    public int Beds { get; set; } 
} 

और आधार वर्ग, की तरह कुछ के साथ AutoMapper कॉन्फ़िगर करना चाहते हैं:

Mapper.CreateMap<BaseModel, DataDestination>(); 

var someObj = new DataDastination(); 
Mapper.Map(instanceOfBaseModel, someObj); 

यहाँ मैं त्रुटि मिलती है, क्योंकि Automapper कार या कैंपर के विन्यास नहीं है। कुछ इस तरह के साथ Automapper को विन्यस्त करने की कोशिश की:

Mapper.CreateMap<BaseModel, DataDestination>() 
    .ForMember(dest => dest.SomeProp, mapper => mapper.MapFrom(....)); 

MapFrom में, मैं केवल आधार वर्ग से गुण देखें! बेस क्लास का उपयोग करने के लिए ऑटोमैपर को कॉन्फ़िगर कैसे करें, और कार और कैंपर के लिए विशिष्ट ForMember अभिव्यक्ति को कैसे कॉन्फ़िगर करें? उदाहरण के लिए, यदि यह एक कार है, तो इस संपत्ति को इस से मानचित्र करें, और यदि यह एक कैंपर है, तो इस संपत्ति को कहीं और से मानचित्र करें।

उत्तर

25

यहां Mapping Inheritance का वर्णन करने वाला विषय है।

निम्नलिखित आप के लिए काम करना चाहिए:

Mapper.CreateMap<BaseModel, DataDastination>() 
    .Include<Car, DataDastination>() 
    .Include<Camper, DataDastination>();//.ForMember(general mapping) 
Mapper.CreateMap<Car, DataDastination>();//.ForMember(some specific mapping) 
Mapper.CreateMap<Camper, DataDastination>();//.ForMember(some specific mapping) 
+0

इसी तरह की स्थिति के लिए काम किया नहीं (http://stackoverflow.com/questions/39541588/cannot [AutoMapper 5 में ApplicationUser को ViewModel से नक्शा नहीं कर सकते] पर समझाया -map-से-viewmodel करने वाली applicationuser-इन-automapper -5? noredirect = 1 # comment66397101_39541588)। कोई उपाय? –

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