繁体   English   中英

相同类型的Automapper映射对象-覆盖布尔

[英]Automapper Mapping Objects of Same Type - Overwrite Bools

我想使用AutoMapper将相同类型的两个对象合并在一起,如果该字段为null或false,则将其覆盖。 例如,说我有以下模型:

public class TestModel
{
    public string A { get; set; }
    public string B { get; set; }
    public bool C { get; set; }
    public bool D { get; set; }
}

并设置两个模型,例如:

var model1 = new TestModel
{
    A = "a",
    B = "b",
    C = true,
    D = false
}

var model1 = new TestModel
{
    A = null,
    B = "b",
    C = false,
    D = true
}

我想合并它们,所以合并后的模型看起来像

var mergedModel = new TestModel
{
    A = "a",
    B = "b",
    C = true,
    D = true
}

到目前为止,我具有以下映射器配置:

Mapper.Initialize(cfg =>
{
    cfg.CreateMap<TestModel, TestModel>()
        .ForAllMembers(options =>
        {
            options.Condition((source, destination, member) => member != null);
        });
});

var mergedModel = Mapper.Map(model1, model2);

但是,当然,我最终遇到了mergedModel.D = false。 我还需要什么其他条件,以便将错误的布尔值覆盖?

如果要在映射上实现一些逻辑,则最好在每个成员上明确地做到这一点。

但是,如果您真的想通过AutoMapper魔术来做到这一点,则可以添加以下条件:

options.Condition((source, destination, member) => (member as bool?) != false);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM