Automapper пустая строка для пустых - PullRequest
12 голосов
/ 04 октября 2011

Когда я пытаюсь отобразить объект, который имеет свойство нулевой строки, назначение также является нулевым.Могу ли я включить глобальные настройки, в которых говорится, что все пустые строки должны отображаться как пустые?

Ответы [ 3 ]

21 голосов
/ 04 октября 2011

Примерно так должно работать:

public class NullStringConverter : ITypeConverter<string, string>
  {
    public string Convert(string source)
    {
      return source ?? string.Empty;
    }
  }

А в вашем классе конфигурации:

public class AutoMapperConfiguration
{
    public static void Configure()
    {
        Mapper.CreateMap<string, string>().ConvertUsing<NullStringConverter>();

        Mapper.AddProfile(new SomeViewModelMapper());
        Mapper.AddProfile(new SomeOtherViewModelMapper());
        ...
    }
}
14 голосов
/ 10 мая 2013

Если вам нужен неглобальный параметр, и вы хотите сделать это для каждого свойства:

Mapper.CreateMap<X, Y>()
.ForMember(
    dest => dest.FieldA,
    opt => opt.NullSubstitute(string.Empty)
);
11 голосов
/ 15 апреля 2014

Как и в ответе Дэвида Вика, вы также можете использовать ConvertUsing с лямбда-выражением, что устраняет необходимость в дополнительном классе.

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