AutoMapper Map() возвращает неправильные значения
У меня есть отображение класса MyClass
в тот же класс MyClass
,
Класс имеет List<T>
собственность в нем. List<T>
NULL перед картой.
После сопоставления с AutoMapper, List<T>
больше не NULL. (AllowNullDestinationValues
здесь ничего не делает...)
Это намеренно или ошибка? Я пропустил какой-то шаг настройки?
using System.Collections.Generic;
using System.Diagnostics;
using AutoMapper;
namespace ConsoleApplication1
{
public class MyClass
{
public string Label { get; set; }
public List<int> Numbers { get; set; }
}
class Program
{
static void Main(string[] args)
{
Mapper.CreateMap<MyClass, MyClass>();
MyClass obj1 = new MyClass { Label = "AutoMapper Test" };
MyClass obj2 = new MyClass();
Mapper.Map(obj1, obj2);
Debug.Assert(obj2 != null && obj2.Numbers == null, "FAILED");
}
}
}
Я использую AutoMapper v4.1.1 от NuGet.
1 ответ
Решение
По умолчанию AutoMapper отображает пустую коллекцию вместо пустой. Вы можете изменить это, создав собственный профиль AutoMapper для конфигурации.
Посмотрите на код ниже.
public class MyClass
{
public string Label { get; set; }
public List<int> Numbers { get; set; }
}
class Program
{
static void Main(string[] args)
{
Mapper.AddProfile<MyProfile>(); // add the profile
MyClass obj1 = new MyClass { Label = "AutoMapper Test" };
MyClass obj2 = new MyClass();
Mapper.Map(obj1, obj2);
Debug.Assert(obj2 != null && obj2.Numbers == null, "FAILED");
}
}
public class MyProfile : Profile
{
protected override void Configure()
{
AllowNullCollections = true;
CreateMap<MyClass, MyClass>();
// add other maps here.
}
}