AutoMapper自定义映射

N.K*_*N.K 9 c#

让我们假设我有以下类

public class foo
{
    public string Value;
}


public class bar
{
    public string Value1;
    public string Value2;
}
Run Code Online (Sandbox Code Playgroud)

现在我想配置自动映射,如果Value1以"A"开头,则将Value1映射到Value,否则我想将Value2映射到Value.

这是我到目前为止:

Mapper
    .CreateMap<foo,bar>()
    .ForMember(t => t.Value, 
        o => 
            {
                o.Condition(s => 
                    s.Value1.StartsWith("A"));
                o.MapFrom(s => s.Value1);
                  <<***I want to throw Exception here***>>
            })
Run Code Online (Sandbox Code Playgroud)

但是我知道如何在条件基础上给出值1或值2,但不知道如何放置一些自定义代码,调用函数或抛出异常

请指南.

D S*_*ley 18

你可以将lambda传递给ResolveUsing:

.ForMember(f => f.Value, o => o.ResolveUsing(b =>
    {
        if (b.Value1.StartsWith("A"));)
        {
            return b.Value1;
        }
        return b.Value2;
    }
));
Run Code Online (Sandbox Code Playgroud)

  • 你对"记忆的参考"是什么意思? (2认同)
  • 我仍然不确定我理解 - "MapFrom"被设计为直接从属性映射(它仍然将_value_从_reference_拉到被映射的对象),而`ResolveUsing`被设计为允许虚拟_any_映射逻辑. (2认同)