Automapper отображает строку в список <string>неправильно - PullRequest
0 голосов
/ 10 марта 2020

У меня есть два класса

 public class SourceClass
{
    public Guid Id { get; set; }
    public string Provider { get; set; }
}


public class DestinationClass
{
    public Guid Id { get; set; }
    public List<string> Provider { get; set; }
}

Мое отображение выглядит следующим образом:

CreateMap<SourceClass, DestinationClass>()
    .ForMember(destinationMember => destinationMember.Provider,
        memberOptions => memberOptions.MapFrom(src => 
            new List<string> { src.Provider ?? "" }));

Теперь ранее Provider в DestinationClass было Providers, и отображение работало как обычно , Однако после согласования правописания в обоих классах сопоставление не происходит должным образом.

"Test" из исходного класса сопоставляется с ["T", "e", "s", "t"]. Когда имена свойств были разными в каждом классе, отображение работало правильно.

1 Ответ

1 голос
/ 10 марта 2020

Я использовал:

  • Консольное приложение
  • . NET 4.6.1
  • последняя стабильная Automapper

Такое поведение не воспроизводимо:

static MapperConfiguration _conf;

static void Main(string[] args)
{
    var src = new SourceClass() { Id = Guid.NewGuid(), Provider = "FooProvider" };
    InitializeAutomapper();
    var mapper = _conf.CreateMapper();
    DestinationClass destinationClass = mapper.Map<DestinationClass>(src);
    Console.WriteLine(destinationClass.Provider[0]);
}

static void InitializeAutomapper()
{
    _conf = new MapperConfiguration(cfg => 
        cfg.CreateMap<SourceClass, DestinationClass>()
            .ForMember(destinationMember => destinationMember.Provider,
                memberOptions => memberOptions.MapFrom(src => 
                    new List<string> { src.Provider ?? "" })));
}

Вывод:

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