2013-08-08 20 views
10

Tôi đã sử dụng Automapper một thời gian, và nó hoạt động rất gọn gàng. tôi có các bản đồ sau:Nhận loại đích từ Automapper.Mapper

Mapper.CreateMap<Models.MyModel,Entities.MyEntity>(); 

Có cách nào, bất kỳ phương pháp đó, với điều kiện typeof(Models.MyModel) sẽ trở lại typeof(Entities.MyEntity)?

Trả lời

9

Bạn có thể nhận tất cả các đăng ký TypeMap s (Loại của trình tự động để lưu trữ các cặp kiểu nguồn đích và các thông tin liên quan đến ánh xạ khác) với phương thức Mapper.GetAllTypeMaps().

Sử dụng typemaps bạn có thể tìm kiếm bạn loại nguồn:

[Test] 
public void Test() 
{ 
    Mapper.CreateMap<Models.MyModel, Entities.MyEntity>(); 
    var destination = Mapper.GetAllTypeMaps() 
          .First(t => t.SourceType == typeof(Models.MyModel)); 
    Assert.AreEqual(typeof (Entities.MyEntity), destination.DestinationType); 
} 
1

Một giải pháp, đó là một chút sạch hơn câu trả lời được chấp nhận là sử dụng ResolveTypeMap chức năng của AutoMapper:

var typeMap = Mapper.Configuration.ResolveTypemap(
    typeof(Models.MyModel), //source type 
    typeof(Entities.MyEntity) //destination type 
); 
var destinationType = typeMap.DestinationType; 

Ngoài ra, bạn có thể chuyển loại cơ sở dưới dạng loại đích (tại đây là Entities.MyEntity) và trình tự động sẽ trả về loại có nguồn gốc.

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