C# 将Automapper配置为在输入时忽略类型';这是一个内部属性,但不是内部属性

C# 将Automapper配置为在输入时忽略类型';这是一个内部属性,但不是内部属性,c#,automapper,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<MayHave

这个需要一点解释。我有一套这样的类型:

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; }
}
但是当我有

//...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
/…一些代码
mustnothaveobj=Mapper.Map(notHaveObj);
//我希望能够访问obj.MayValues[0].MayID,但是
//*不是*obj.MayValues[0]。值
我已经浏览了automapper关于嵌套、多态性、列表等的文档,但我找不到任何与我想要的完全匹配的东西


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

我找不到一种方法来按照我想要的方式配置Automapper,而不走继承路线——尽管事实证明,这没有我想象的那么麻烦。我做了如下的事情

public class NoChild : MayHaveChild
{
}

public class MustNotHaveChild { get; set; }
{
         //       \/--datatype change here
    public List<NoChild> MayValues { get; set; }
}
公共类NoChild:MayHaveChild
{
}
公共类MustNotHaveChild{get;set;}
{
//\/--在此更改数据类型
公共列表值{get;set;}
}
然后,稍后在AutoMapper配置中

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

源类型看起来像什么?也就是说,你映射到这些类的是什么?我不确定你的意思。上面的代码是源类型
childObj
notHaveObj
的类型,假设它们具有相同的属性。实际上,我将实体对象映射到DTO以进行传输,然后再进行传输。没有明显的区别,也与这个问题无关。凯——只是为了举个例子而检查一下