C# AutoMapper Map()返回错误的值

C# AutoMapper Map()返回错误的值,c#,automapper,C#,Automapper,我有一个类MyClass到同一个类MyClass的映射 该类中有一个列表属性。 列表在映射之前为空 使用自动映射器映射后,列表不再为空。(AllowNullDestinationValues在这里什么都不做…) 这是故意的还是错误?我是否缺少一些配置步骤 using System.Collections.Generic; using System.Diagnostics; using AutoMapper; namespace ConsoleApplication1 { public

我有一个类
MyClass
到同一个类
MyClass
的映射

该类中有一个
列表
属性。
列表
在映射之前为空

使用自动映射器映射后,
列表
不再为空。(
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");
        }
    }
}
使用System.Collections.Generic;
使用系统诊断;
使用自动制版机;
命名空间控制台应用程序1
{
公共类MyClass
{
公共字符串标签{get;set;}
公共列表编号{get;set;}
}
班级计划
{
静态void Main(字符串[]参数)
{
CreateMap();
MyClass obj1=新的MyClass{Label=“AutoMapper Test”};
MyClass obj2=新的MyClass();
映射器映射(obj1、obj2);
Assert(obj2!=null&&obj2.Numbers==null,“失败”);
}
}
}

我使用NuGet的AutoMapper v4.1.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.
    }
}
公共类MyClass
{
公共字符串标签{get;set;}
公共列表编号{get;set;}
}
班级计划
{
静态void Main(字符串[]参数)
{
Mapper.AddProfile();//添加配置文件
MyClass obj1=新的MyClass{Label=“AutoMapper Test”};
MyClass obj2=新的MyClass();
映射器映射(obj1、obj2);
Assert(obj2!=null&&obj2.Numbers==null,“失败”);
}
}
公共类MyProfile:Profile
{
受保护的覆盖无效配置()
{
AllowNullCollections=true;
CreateMap();
//在此处添加其他地图。
}
}

您的答案在这里=>谢谢,不过我更喜欢Teoman shipahi提供的链接中的解决方案:Mapper.Configuration.AllowNullCollections=true;