2010-11-19 29 views
7

Hi Tôi đang sử dụng AutoMapper để di chuyển từ một Model đến một Dto và nó làm việc tuyệt vời. Trong một TypeConverter Tôi cần phải tiêm Giao diện (dịch vụ) phải được trình chuyển đổi loại sử dụng để thực hiện chuyển đổi.AutoMapper TypeConverter tùy chỉnh constructor

Làm cách nào để thực hiện điều này trong AutoMapper?

+0

nào dependancy gói tiêm bạn đang sử dụng? – BeRecursive

Trả lời

12

Bạn có thể không chỉ tạo một hàm tạo trên lớp TypeConverter, chấp nhận dịch vụ không? Thay vì sử dụng chung ConvertUsing, vượt qua trong một trường hợp mới của TypeConverter bạn xây dựng với dịch vụ ...

public class MyTypeConverter : TypeConverter<String, String> 
    { 
     public MyTypeConverter(IMyService service) 
     { 
      MyService = service; 
     } 

     public IMyService MyService { get; set; } 

     protected override string ConvertCore(string source) 
     { 
      //use service 
     } 
    } 

Cách sử dụng:

 Mapper.CreateMap<string, string>() 
        .ConvertUsing(new MyTypeConverter(_myService)); 
+0

Ồ vâng, tôi không biết tôi có thể làm điều đó. Tôi đã sử dụng phương pháp khác ConvertUsing () – Raffaeu

+2

Nếu dịch vụ mà bạn yêu cầu là 'IMapper' thì' ResolutionContext context' sẵn có trong phương thức 'ITypeConverter <>. Convert()' cung cấp trình ánh xạ hiện tại. –

+0

nhận xét tuyệt vời Chris Walsh homie –

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