我使用Automapper 8.1.0进行转换时涉及3个主要类。
public class MessageW{
public int NumAverages { get; set; }
public int RXWaveguide { get; set; }
}
public class ProcessingS{
public ProcessingS(double startTime, double timeStep) {
StartTime = startTime;
TimeStep = timeStep;
}
public double StartTime { get; }
public double TimeStep { get; }
}
public class ProcessingW : ProcessingS {
public int NumAverages { get; }
public int RXWaveguide { get; }
public ProcessingW(double startTime, double timeStep, int
numAverages, int rxWaveguide) : base( startTime, timeStep) {
NumAverages = numAverages;
RXWaveguide = rxWaveguide;
}
}
我正在使用MessageW
从ProcessingW
类转换为Automapper
类。
请注意,ProcessingW
类是从ProcessingS
继承的。
这是我的Automapper
配置。
var msgWfm = new MessageW() {
NumAverages = 5,
RXWaveguide = 5
};
var mapperConfig = new MapperConfiguration(
cfg => {
cfg.CreateMap<MessageW, ProcessingW>()
.ForMember(proWfmDest => proWfmDest.StartTime, opt => opt.Ignore())
.ForMember(proWfmDest => proWfmDest.TimeStep, opt => opt.Ignore());
});
var myMapper = mapperConfig.CreateMapper();
mapperConfig.AssertConfigurationIsValid();
当我运行自动映射器转换时,mapperConfig.AssertConfigurationIsValid();
抛出了一条错误消息:
找到未映射的成员。在下面查看类型和成员。添加一个 自定义映射表达式,忽略,添加自定义解析器或修改 源/目标类型对于没有匹配的构造函数,请添加一个无参数 ctor,添加可选参数或映射所有构造函数参数 ================================================== ======================== MessageW-> ProcessingW(目标成员列表) MessageW-> ProcessingW(目标成员列表)
没有可用的构造函数。
当我尝试
ProcessingW
类或StartTime
类中添加TimeStep
,MessageW
属性然后,Automapper转换有效,但是上述那些功能无法满足我的要求。
如何根据当前的班级设计和Automapper设置使Automapper正常工作?我错过了什么吗?
感谢您的时间和耐心阅读我的问题,如果需要,我很乐意添加详细信息。