我正在使用AutoMapper 9.0版以下单元测试应更改stockRecord.DayLowestPrice
的值,但不能更改。
[StockRecord
和StockRecordDto
所有成员都完全相同。
[Fact]
public void Test1()
{
var configuration = new MapperConfiguration(cfg =>
{
cfg.CreateMap<StockRecord, StockRecordDto>()
.ForMember(dst => dst.ClosePrice, op => op.MapFrom(src => src.ClosePrice > 0 ? 300 : 400))
.ReverseMap()
.ForMember(dst => dst.ClosePrice, op => op.MapFrom(src => src.ClosePrice > 0 ? 100 : 200));
});
configuration.AssertConfigurationIsValid();
var mapper = configuration.CreateMapper();
var stockRecordDto = new StockRecordDto
{
TickerSymbol = "ticker 01",
TradingDay = DateTime.Now,
OpenPrice = 10,
ClosePrice = 20,
DayHighestPrice = 30,
DayLowestPrice = 5
};
StockRecord stockRecord = mapper.Map<StockRecord>(stockRecordDto);
}
根据autoMapper的docs`stockRecord.DayLowestPrice应该更改为100。但仍为5。我花了整整一个下午的时间,但还是想不通。
谢谢。
如果要更改DayLowestPrice
,则在映射中将DayLowestPrice
代替ClosePrice
用作目标字段:
cfg.CreateMap<StockRecord, StockRecordDto>()
.ForMember(dst => dst.DayLowestPrice, op => op.MapFrom(src => src.ClosePrice > 0 ? 300 : 400))
.ReverseMap()
.ForMember(dst => dst.DayLowestPrice, op => op.MapFrom(src => src.ClosePrice > 0 ? 100 : 200));