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.
    }
}
Другие вопросы по тегам