使用AutoMapper基于鉴别器值从不同属性进行映射

时间:2010-03-17 12:53:23

标签: .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可以实现吗?

1 个答案:

答案 0 :(得分:2)

您可以这样做:

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