C# 如何避免automapper中的重复计算

C# 如何避免automapper中的重复计算,c#,automapper,C#,Automapper,我的贷款档案中有: 我可以看到dto被映射为totaloanadvanced为0。使用BeforeMap执行此操作时也会发生相同的情况: 我应该怎么做呢?关于如何修复AutoMapper配置,我没有答案。然而,你的问题是,我怎样才能避免这种情况?我应该如何做到这一点,所以我想用一些建议来回答:不要将业务逻辑放在映射器配置中 不这样做的原因是: 映射对象应尽可能简单,并按约定映射属性 不要在mapper配置中添加这样的魔力,因为这会使代码更难理解/遵循 你会避免像现在这样的古怪行为 您的代码更难测

我的贷款档案中有:

我可以看到dto被映射为totaloanadvanced为0。使用BeforeMap执行此操作时也会发生相同的情况:


我应该怎么做呢?

关于如何修复AutoMapper配置,我没有答案。然而,你的问题是,我怎样才能避免这种情况?我应该如何做到这一点,所以我想用一些建议来回答:不要将业务逻辑放在映射器配置中

不这样做的原因是:

映射对象应尽可能简单,并按约定映射属性 不要在mapper配置中添加这样的魔力,因为这会使代码更难理解/遵循 你会避免像现在这样的古怪行为 您的代码更难测试
它不应该出现在BeforeMap中吗?@Fabio我也尝试过,但结果相同,没有自动映射的旧经典映射方法是否仍然是您的选项?检查。这个,这个,这个和这个!是,请不要将业务逻辑放入映射中
CreateMap<Loan, LoanDto>()
    .ForMember(
        dto => dto.TotalLoanAdvanced,
        loan => loan.MapFrom(l => l.TotalLoanAdvanced()))
    .ForMember(
        dto => dto.TotalInterestToLoanEndDate,
        loan => loan.MapFrom(l => l.InterestRepaymentAtLoanEndDate()))
    .ReverseMap()
    .AfterMap((dto, loan) =>
    {

    });
.AfterMap((dto, loan) =>
{
    dto.TotalLoanAdvanced = 5000000;
});
.BeforeMap((loan, dto) =>
{
    dto.TotalLoanAdvanced = 5000000;
});