2011-08-25 61 views
1

我有一种情况,即AutoMapper无法正常工作而忽略成员。这是类结构和映射。AutoMapper不会忽略嵌套类型

public class Class1 { 
     public Class2 Class2 { get; set; } 
} 

public class Class2 { 
    public List<Class3> class3List { get; set; } 
} 

Mapper.CreateMap<Class1, Class1>(); 
Mapper.CreateMap<Class2, Class2> 
    .ForMember(dest => dest.class3List, opt => opt.Ignore()); 
Mapper.CreateMap<Class3, Class3>(); 

当我映射的Class1到Class

Mapper.Map<Class1, Class1>(object1, object2); 

在对象2的class3List是空的,但映射收到的物品。如果我这样做的映射。

Mapper.CreateMap<Class1, Class1>(); 
    .ForMember(dest => dest.Class2, opt => opt.Ignore()); 
Mapper.CreateMap<Class2, Class2>(); 
Mapper.CreateMap<Class3, Class3>(); 

它忽略了Class2属性,因为它应该如此。 那么,在将Class1映射到Class1时,如何忽略class3List而不清空它?

回答

1

通常映射是从一个类型的类到另一个类的类完成的。你想在这里做什么?克隆?

看看API我认为最好使用UseDestinationValue()而不是忽略。我用你的代码测试了它,但它似乎仍然没有工作。

Mapper.CreateMap<ParentFoo, ParentBar>() 
    .ForMember(b => b.Child, o => o.UseDestinationValue()); 
+0

UseDestinationValue是我的问题的解决方案,我用不同的方式解决了整个问题;) – TuomasK