2012-06-29 19 views
15

Tôi có hai lớp (mô hình chế độ xem MVC) được kế thừa từ một lớp cơ sở trừu tượng.Trình tự động với lớp cơ sở và các tùy chọn cấu hình khác nhau để triển khai

abstract class BaseModel { } 

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

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

và muốn cấu hình AutoMapper với lớp cơ sở, một cái gì đó như:

Mapper.CreateMap<BaseModel, DataDestination>(); 

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

Ở đây tôi nhận được lỗi, vì Automapper không có cấu hình của xe hoặc cắm trại. Đã thử định cấu hình Automapper với một cái gì đó như thế này:

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

Trong MapFrom, tôi chỉ thấy các thuộc tính từ lớp cơ sở! Làm thế nào để cấu hình Automapper để sử dụng BaseClass, và biểu hiện cụ thể ForMember cho ô tô và Camper? Ví dụ: nếu đó là Ô tô, hãy lập bản đồ thuộc tính này từ vị trí này và nếu đó là Xe cắm trại, hãy lập bản đồ thuộc tính này từ nơi khác.

Trả lời

25

Đây là chủ đề mô tả Mapping Inheritance.

Sau đây nên làm việc cho bạn:

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

Không làm việc cho một tình huống tương tự giải thích về [Không thể lập bản đồ từ ViewModel để ApplicationUser trong AutoMapper 5] (http://stackoverflow.com/questions/39541588/cannot -map-from-viewmodel-to-applicationuser-in-automapper-5? noredirect = 1 # comment66397101_39541588). Bất kỳ ý tưởng? –

Các vấn đề liên quan