2014-11-14 3 views
0

я имею ошибку при automapper в выигрыше приложения в C# эту строку:ошибка в automapper с типом ребенка

config.CreateMap<T432, PROC>() 
.ForMember(d => d.TIPO.COD_TIPO , o => o.MapFrom(s => s.COD_TIPO)) 

ошибка является: Expression «d => d.TIPO.COD_TIPO» должны решить член верхнего уровня, а не свойства дочернего объекта. Использовать пользовательский распознаватель от типа ребенка или опции AfterMap вместо \ г \ nNome parametro:.? LambdaExpression "}

где

class T432 
{ 
    public string COD_TIPO { get; set; } 
} 
class PROC 
{ 
    public TIPO_PROC TIPO { get; set; } 
} 
class TIPO_PROC 
{ 
    public string COD_TIPO { get; set; } 
} 

как правильно automapper

заранее спасибо

+0

ответил ли я на помощь? – Ric

ответ

0

Вам необходимо использовать настраиваемый конвертер типов, поскольку AutoMapper не может настроить «вложенные» объекты и устанавливает только свойства верхнего уровня, посмотрите пример на сайте automapper https://automapper.codeplex.com/wikipage?title=Custom%20Type%20Converters

вот пример:

Mapper.CreateMap<string, DateTime>().ConvertUsing(new DateTimeTypeConverter());

public class DateTimeTypeConverter : ITypeConverter<string, DateTime> 
{ 
    public DateTime Convert(string source) 
    { 
     return System.Convert.ToDateTime(source); 
    } 
} 

Это отображает string к DateTime объекту. Вы можете легко заменить свои собственные типы и предоставить любую конфигурацию в методе Convert.

-1

Брат правильно то, что Try This

config.CreateMap(T432,PROC)().ForMember(d=>d.TIPO, o => o.ResolveUsing(s => new TIPO {COD_TIPO=s.COD_TIPO})); 

Sorry Используйте это "<>" вместо() в CreateMap, как CreateMap <>.

Смежные вопросы