Config Automapper在内部属性而不是内部属性时忽略类型

时间:2014-11-25 12:05:43

标签: c# automapper

这个需要一点解释。我有一组这样的类型;

public class Child
{
    public int ID { get; set;}
}

public class MayHaveChild
{
    public Child Value { get; set; }
    public int MayID { get; set; }
}

public class MustNotHaveChild { get; set; }
{
    public List<MayHaveChild> MayValues { get; set; }
}

在上面的场景中,当我映射MayHaveChild时,我希望Child的任何映射都包含MustNotHaveChild对象的值,除了。 E.g;

当我有

//...some code
MayHave obj = Mapper.Map<MayHaveChild>(childObj);
// I want to be able to access obj.Child.ID

但是当我有

//...some code
MustNotHave obj = Mapper.Map<MustNotHaveChild>(notHaveObj);
// I want to be able to access obj.MayValues[0].MayID but 
// *not* obj.MayValues[0].Value

我已经完成了关于嵌套,多态,列表等的自动播放器文档,我找不到任何与我想要的完全匹配的内容。

我可以通过将MayHave类继承到MustNotHave变体来解决这个问题,但这将涉及更改相当多的现有代码。有没有办法以我需要的方式配置Automapper?

1 个答案:

答案 0 :(得分:0)

我找不到一种方法来配置AutoMapper,而不是按照我想要的方式配置AutoMapper,尽管事实证明这比我想象的要少。我做了类似下面的事情;

public class NoChild : MayHaveChild
{
}

public class MustNotHaveChild { get; set; }
{
         //       \/--datatype change here
    public List<NoChild> MayValues { get; set; }
}

然后,稍后在AutoMapper配置中;

Mapper.CreateMap<MayHave, NoChild>()
      .ForMember(c => c.Child, opt => opt.Ignore());