AutoMapper MapFrom无效

问题描述 投票:0回答:1

我正在使用AutoMapper 9.0版以下单元测试应更改stockRecord.DayLowestPrice的值,但不能更改。

[StockRecordStockRecordDto所有成员都完全相同。

[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。我花了整整一个下午的时间,但还是想不通。

谢谢。

c# automapper
1个回答
0
投票

如果要更改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));
© www.soinside.com 2019 - 2024. All rights reserved.