2016-07-26 3 views
4

Использование Automapper 5.0.2.0 Я пытаю карту От TypeA к TypeB:Mapping от двойного

public class TypeA 
{ 
    public double Length { get; set; } 
} 


public class TypeB 
{ 
    public Distance Length { get; set; } 
} 

я сделать предположение о том, что длина хранится в дюймах и создали это отображение профиля:

public class CalculationProfile : Profile 
{ 
    public CalculationProfile() 
    { 
     CreateMap<TypeA, TypeB>() 
      .ForMember(dest => dest.Length, 
         opt => opt.MapFrom(src => new Distance(src.Length, "Inch"))) 
    } 
} 

и я использую его в качестве такового:

Mapper.Initialize(configuration => 
{ 
    configuration.AddProfile(new CalculationProfile()); 
}); 

var typeA = new TypeA(){Length = 1.0}; 

var typeB = Mapper.Map<TypeB>(typeA); 

Однако, что последняя строка выдает следующее сообщение об ошибке:

AutoMapper.AutoMapperMappingException was unhandled by user code 
    HResult=-2146233088 
    Message=Missing type map configuration or unsupported mapping. 

Mapping types: 
Double -> Distance 
System.Double -> UnitClassLibrary.DistanceUnit.Distance 
    Source=Anonymously Hosted DynamicMethods Assembly 
    StackTrace: 
     at lambda_method(Closure , Double , Distance , ResolutionContext) 
     at lambda_method(Closure , Object , Object , ResolutionContext) 
     at TestProject.AutoMapperTests.FromPersistenceObjectToCalculationModel_Test() in C:\...\AutoMapperTests.cs:line 69 
    InnerException: 

Это похоже на суперпростой случай, когда Automapper обрабатывается, однако я, похоже, не могу исправить ошибку. Любые предложения приветствуются.

ответ

0

Вы действительно хотите новый тип преобразования между двойным и расстоянием:

CreateMap<double, Distance>().ConvertUsing(src => new Distance(src, "Inch")); 
Смежные вопросы