2015-12-22 48 views
2

我有一个类MyClass到同一类MyClass的映射。AutoMapper映射()返回错误值

该课程中有一个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"); 
     } 
    } 
} 

我使用NuGet的AutoMapper v4.1.1。

+1

你的答案就在这里=> http://stackoverflow.com/a/8409623/929902 –

回答

2

默认情况下,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. 
    } 
} 
+0

谢谢你,虽然我更喜欢从链接泰奥曼shipahi给出了解决方案:Mapper.Configuration.AllowNullCollections =真; – pellea