Вы можете попробовать использовать ValueConverter с AutoMapper. Это может выглядеть примерно так:
public class ListFormatter : IValueConverter<string, List<string>>
{
public List<string> Convert(string source)
{
if (source != null)
{
return new List<string> { source };
}
return new List<string>();
}
}
И тогда вы можете использовать это так:
CreateMap<SourceClass, DestinationClass>()
.ForMember(destinationMember => destinationMember.Provider,
memberOptions => memberOptions.ConvertUsing(new ListFormatter()));
Это позволит вам в будущем изменить ваш конвертер значений, если вам нужно будет переключить логи c или сделать что-то более сложное.
Редактировать
Поскольку вы используете более старую версию, вы можете использовать метод private / static / extension для того же предмет. Итак, что-то вроде
List<string> ConvertStringToList(string source)
{
if (source != null)
{
return new List<string> { source };
}
return new List<string>();
}
, а затем назовите это так:
CreateMap<SourceClass, DestinationClass>()
.ForMember(destinationMember => destinationMember.Provider,
memberOptions => memberOptions.MapFrom(src => ConvertStringToList(src.Provider)));
Я обычно предпочитаю делать что-то встроенное, когда все становится более сложным, для удобства чтения