Как добавить свойство карты в уже сопоставленное эталонное свойство - PullRequest
0 голосов
/ 02 апреля 2020

Я использую AutoMapper и у меня есть некоторые проблемы. Например:

Типы источников

class CommonInfo
{
  public int Id {get; set;}
  public string Name {get; set;}
}

class AdvanceInfo
{
  public string Description {get; set;}
}

class Source
{
  public CommonInfo Common {get; set;}
  public AdvancedInfo Advance {get; set;}
}

Типы назначений

class Destination
{
  public FullDestinationInfo Info {get; set;}
}

class FullDestinationInfo
{
  public int Id {get; set;}
  public string Name {get; set;}
  public string Description {get; set;}
}

Использование AutoMapper

IQueryable<Source> srcQuery = GetSourceQuery();
Destination dest = srcQuery.ProjectTo<Destination>().First();

Конфигурация AutoMapper

CreateMap<CommonInfo, FullDestinationInfo>() // CommonInfo without Description member
CreateMap<Source, Destination>() // Main Source and Destination types
  .ForMember(dest => dest.Info, opt => opt.MapFrom(src => src.Common)) // <== it`s working!
  // Fill Description member from Source.Advance
  .ForMember(dest => dest.Info.Description, opt => opt.MapFrom(src => src.Advance.Description)); // <== not working :(

Исключение: выражение 'dest => dest.Info.Description' должно разрешаться для элемента верхнего уровня, а не для свойств любого дочернего объекта. Вместо этого вы можете использовать ForPath, пользовательский распознаватель для дочернего типа или параметр AfterMap.

Я пытаюсь использовать ForPath и AfterMap, но безрезультатно. Исключение исчезает, но свойство не отображается и остается по умолчанию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...