AutoMapper不会忽略嵌套类型

时间:2011-08-25 10:39:10

标签: c# .net 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映射到Class1

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 个答案:

答案 0 :(得分:1)

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

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

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