.net - 使用 AutoMapper 根据鉴别器值从不同属性进行映射

标签 .net automapper

我有一个非常通用的对象,我想使用 AutomMapper 将其映射到目标类型,但我想根据源类型中的属性值将其映射到不同的类型。例如,假设我有:

public class Source
{
    public string Discriminator { get; }
    public string ValueA { get; }
    public string ValueB { get; }
}

public class Target
{
    public string Value { get; set; }
}

如果 Source.Discriminator == "A",我想将 Source.ValueA 映射到 Target.Value;如果 Source.Discriminator == "B",我想将 Source.ValueB 映射到 Target.Value。

使用 AutoMapper 可以实现这一点吗?

最佳答案

你可以这样做:

Mapper.Map<Spurce, Target>().ForMember(x => x.Value, x => x.MapFrom(y => {
    if(y.Discriminator == "A")
        return y.ValueA;
    return y.ValueB;
    });

关于.net - 使用 AutoMapper 根据鉴别器值从不同属性进行映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2462271/

相关文章:

c# - C#中的轻量级表类型

c# - WCF 服务引用命名空间与原始命名空间不同

c# - AutoMapper:将元组映射到元组

c# - 如何在 PropertyGrid 中使用 NodaTime 类?

.net - 如何始终克服损失的几分钱?

c# - 使用 WCF 和 Data Contract Serializer 时需要生成 XmlSerializers 程序集

c# - AutoMapper - 将源对象映射到嵌套对象

c# - AutoMapper:为什么 UseValue 只执行一次

c# - 带有构造函数参数的自动映射对象

c# - AutoMapper 映射函数到成员的获取