Mapster 未在列表 c# 中映射派生类

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

我有多个类实现基类,例如:

public abstract class Step
{
    public StepId Id {get; set;}
    public string Text {get; set;
    public StepType Type {get;set;}
}

public class SelectionStep : Step 
{
    public List<string> Selections {get; set;}
}

public class NumericStep : Step 
{
}

使用以下 Mapster 配置:

config.NewConfig<SelectionStep, StepResponse>()
    .Map(dest => dest.Selections, src => src.Selections.Select(x => x.Value));

config.NewConfig<Step, StepResponse>()
    .Map(dest => dest.Id, src => src.Id.Value.ToString())
    .Map(dest => dest.Type, src => src.Type.ToString());

当我从一个

SelectionStep
映射到
StepResponse
时,它正在工作
_mapper.Map<StepResponse>(SelectionStep)

当我从包含

List<Step>
SelectionStep
模型的
NumericStep
进行映射时,它不使用
SelectionStepConfig
_mapper.Map<List<StepResponse>>(List<Step>)

c# .net-6.0 mapster
2个回答
0
投票

我找到了解决方案。

我更改了

Step
配置以包含
SelectionStep
,请参阅下面的新配置。

config.NewConfig<SelectionStep, StepResponse>()
    .Map(dest => dest.Selections, src => src.Selections.Select(x => x.Value));

config.NewConfig<Step, StepResponse>()
    .Include<SelectionStep, StepResponse>()
    .Map(dest => dest.Id, src => src.Id.Value.ToString())
    .Map(dest => dest.Type, src => src.Type.ToString());

0
投票

此映射是否在单元测试期间映射,步骤是否在单元测试期间映射 SuperClass SelectionStep 中的所有属性?

© www.soinside.com 2019 - 2024. All rights reserved.