如何使用Automapper仅映射到带有前缀的属性?

时间:2016-05-19 02:52:10

标签: c# mapping automapper

我正在尝试使用Automapper从A类映射到B类。但是,我想创建一个仅在目标上有可用前缀字段时映射的映射。我该怎么做?

例如,这不起作用:

class TestSource
{
    public long id { get; set; }
}

class TestDest
{
    public long TD_id { get; set; }
    public long id { get; set; }
}

private void button1_Click(object sender, EventArgs e)
{
    TestSource lclTS = new TestSource() { id = 20 };

    TestDest lclTD = new TestDest() { id = 30 };

    var lclConfig = new MapperConfiguration
    (
        cfg =>
        {
            cfg.ClearPrefixes();
            cfg.RecognizeDestinationPrefixes("TD_");
            cfg.CreateMap<TestSource, TestDest>();
        }
     );

    IMapper lclMapper = lclConfig.CreateMapper();

    lclMapper.Map(lclTS, lclTD);
}

结果将是
lclTS.id = 20
lclTD.id = 20&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;错了,我没有映射这个,没有前缀,这应该留30 lclTD.TD_id = 20

1 个答案:

答案 0 :(得分:1)

自动映射器映射具有相同名称和类型的字段(如果未显式映射)。

尝试使用ForMember方法在字段之间创建显式映射。