2012-12-29 29 views
5

Tôi có mô hình với bất động sản:Làm thế nào để sử dụng ValueResolver nếu loại trường không có hàm tạo mặc định?

public class MyModel{ 
     public SelectList PropertyTypeList { get; set; } 
} 

Và tôi có ValueResolver

public class MyPropertyValueResolver : ValueResolver<ProductProperty, SelectList> 
{ 
    protected override SelectList ResolveCore(ProductProperty source) 
    { 
     myList = .......; 
     return new SelectList(myList, "Value", "Text"); 
    } 
} 

Sau đó, tôi cấu hình bản đồ

Mapper.CreateMap<Source, Destination>() 
      .ForMember(s => s.PropertyTypeList, opt => opt.ResolveUsing<MyPropertyValueResolver>()); 

Nhưng nó nói với tôi rằng

Type 'System.Web.Mvc.SelectList' does not have a default constructor 

Tôi nên làm gì để nó hoạt động?

Trả lời

3

Thay vì tự động hóa cho một danh sách lựa chọn, bạn đã xem xét tự động hóa thành một mảng đơn giản chưa, và sau đó sử dụng thuộc tính chỉ nhận để bọc này dưới dạng danh sách lựa chọn?

This answer mô tả cách tiếp cận.

Ngoài ra, từ cùng một câu hỏi SO, có ý tưởng ConstructedBy, cũng như cách sử dụng trực tiếp MapFrom.

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