AutoMapper - установка строки назначения на ноль фактически делает ее строкой. Пустой - PullRequest
3 голосов
/ 06 октября 2009

Со следующим отображением:

Mapper.CreateMap<ObjectA, ObjectB>()
    .ForMember(dest => dest.SomeStringProperty, opt => opt.MapFrom(src => null))

SomeStringProperty теперь пустая строка, а не null (как я и ожидал)

Это ошибка? Как я могу получить его на самом деле быть нулевым?

Я вижу, что opt.Ignore() сделает его нулевым, но на самом деле я хочу сделать условный ноль, как показано ниже, и упрощенная ошибка (?), Описанная выше, предотвращает это

Mapper.CreateMap<ObjectA, ObjectB>()
    .ForMember(dest => dest.SomeStringProperty, opt => opt.MapFrom(src => src.SomeOtherProp != null ? src.SomeOtherProp.Prop1 : null))

Ответы [ 2 ]

6 голосов
/ 07 октября 2009

Я нашел настройку после просмотра исходного кода ... Подтверждение, что это не ошибка, а фактически настраиваемый параметр.

Когда я настраиваю свои сопоставления ..

Mapper.Initialize(x =>
{
    x.AddProfile<UIProfile>();
    x.AddProfile<InfrastructureProfile>();
    x.AllowNullDestinationValues = true; // does exactly what it says (false by default)
});
1 голос
/ 06 октября 2009

вы можете определить карту для строк, используя

ITypeConverter<string, string>

и при преобразовании возвращать ноль, если ноль. Я думаю, что по замыслу вы получаете пустую строку, и я сам нахожу это естественным и полезным, но, конечно, могу ошибаться;)

Я могу предоставить более точный код, чем приведенный выше, по запросу, но думаю, вы знаете, что делаете.

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