1
我有以下的抽象类AutoMapper继承错误
public abstract class BaseClass
{
public int NumberProperty { get; set; }
}
public abstract class BaseClass_DTO
{
public int NumberProperty { get; set; }
public string NumberPropertyAsString { get; set; }
}
和下面的具体类
public class ConcreteA : BaseClass
{
public string StringProperty { get; set; }
}
public class ConcreteA_DTO : BaseClass_DTO
{
public string StringProperty { get; set; }
}
这是地图
Mapper.Initialize(cfg => {
cfg.CreateMap<BaseClass, BaseClass_DTO>()
.ForMember(p => p.NumberPropertyAsString, opt => opt.MapFrom(x => x.NumberProperty.ToString()));
cfg.CreateMap<ConcreteA, ConcreteA_DTO>()
.IncludeBase<BaseClass, BaseClass_DTO>()
.ReverseMap();
});
Mapper.AssertConfigurationIsValid();
的代码表示,配置无效,因为
Unmapped members were found. Review the types and members below.
Add a custom mapping expression, ignore, add a custom resolver, or modify the source/destination type
=============================================================================
ConcreteA_DTO -> ConcreteA (Source member list)
Temporary.Test.ConcreteA_DTO -> Temporary.Test.ConcreteA (Source member list)
Unmapped properties:
NumberPropertyAsString
由于ReverseMap()
调用而发生错误。如何设置反向贴图来忽略成员而不复制贴图?
感谢您的回答。是。但不幸的是,调用'ReverseMap()'会将类型和调用的第一个参数反转为'.ForMember()'我有一个'BaseClass'类型,它没有'NumberPropertyString'属性。这就是我问“没有复制地图”的方式。 – Lorenzo 2015-04-04 23:12:31
@洛伦佐啊好的。看起来还有一个'ForSourceMember',可以用来在映射中选择源的成员而不是目标。请注意,由于我目前没有安装Automapper的项目,因此无法检查这是否可行。如果没有,我会帮大家一个忙,并删除这个答案。 – Alex 2015-04-04 23:23:27
没问题。让我尝试。这对我更有意义。没有意识到'ForSourceMember'的存在 – Lorenzo 2015-04-04 23:25:32