У меня есть два следующих класса:
У меня есть два класса
public class SourceClass
{
public Guid Id { get; set; }
public string Provider { get; set; }
}
public class DestinationClass
{
public Guid Id { get; set; }
public List<string> Providers { get; set; }
}
У меня есть следующие сопоставления для моего автомпера
CreateMap<SourceClass, DestinationClass>()
.ForMember(destinationMember => destinationMember.Providers,
memberOptions => memberOptions.MapFrom(src => new List<string> {src.Provider ?? ""}));
CreateMap<DestinationClass, SourceClass>().ForMember(SourceClass => SourceClass.Provider,
memberOptions => memberOptions.MapFrom(src => src.Providers.FirstOrDefault()));
Я написал какой-то блок проверяет и может подтвердить следующее поведение:
Когда провайдеры в моем классе назначения имеют значение NULL, это сопоставляется с NULL, и это здорово. Тем не менее, я хотел бы изменить свое отображение так, чтобы, если Providers был пустым списком, он отображался в пустой список и, аналогично, если Provider был нулевым, я хотел бы, чтобы он отображался в пустой список вместо списка с пустая строка.
Кто-нибудь знает, как я могу go сделать это? Я пробовал это для моего преобразования из SourceClass в DestinationClass:
CreateMap<SourceClass, DestinationClass>()
.ForMember(destinationMember => destinationMember.Providers,
memberOptions => memberOptions.MapFrom(src => !string.IsNullOrEmpty(src.Provider) ? new List<string> {src.Provider} : new List<string>()));
, но для перехода в другой путь, пустой список отображается на ноль, а не пустой список. (Я думаю из-за FirstOrDefault ()). Кто-нибудь знает, как я могу обойти это?