Проблема автоматического сопоставления => коллекция моделей видов вместо другой модели видов - PullRequest
0 голосов
/ 17 апреля 2011

У меня есть что-то вроде этого

public class AViewModel
{
    public decimal number { get; set; }
    public List<BViewModel> BVM { get; set; }
}

public class BViewModel
{
    public string someString{ get; set; }
}

public class SomeObject
{
    public decimal number { get; set; }
    public List<OtherObjects> BVM { get; set; }
}

public class OtherObjects {
    public string someString{ get; set; }
}

Mapper.CreateMap<SomeObject,AViewModel>();

Когда у меня есть это, я получаю

  • Попытка сопоставить OtherObjects с BViewModel
  • Использование конфигурации сопоставления для SomeObject с AViewModel
  • Свойство назначения: BVM
  • Отсутствует конфигурация карты типов или не поддерживается отображение.
  • Было сгенерировано исключение типа 'AutoMapper.AutoMapperMappingException'.

Как я могу помочь ему понять, как правильно отобразить его?

Ответы [ 2 ]

5 голосов
/ 17 апреля 2011

Я считаю, что Automapper должен знать, как конвертировать OtherObject в BViewModel.Попробуйте добавить сопоставление для этого тоже.

0 голосов
/ 17 апреля 2011

Необходимо указать преобразователь типов между OtherObject и BViewModel, указав преобразователь пользовательских типов

Вот как будет выглядеть конвертер:

public class OtherToBViewTypeConverter : ITypeConverter<OtherObjects, BViewModel>
{
  public BViewModel Convert(ResolutionContext context) 
  {
    if (context.IsSourceValueNull) return null;

    var otherObjects = context.SourceValue as OtherObjects;

    return new BViewModel { someString = otherObjects.someString; }
  }
}

И тогда карта будет называться так:

Mapper.CreateMap<SomeObject,AViewModel>().ConvertUsing<OtherToBViewTypeConverter>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...