2015-12-22 45 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