0

想象一下这样的类:

class Source
{
    public string Name { get; set; }
    public string Code { get; set; }
}

class Destination
{
    public Destination(string name, int code)
    {}
}

我想配置从Source到的映射Destination我希望 AutoMapper 自动匹配Source.NameDestinationname构造函数参数,因为它们具有相同的名称(不包括命名约定)和类型。但是,第二个构造函数参数需要自定义映射。

到目前为止,我能找到的最好的方法就是手动进行所有映射:

Mapper.CreateMap<Source, Destination>()
    .ConstructUsing(source => new Destination(source.Name, /*Custom map for "code" property*/));

但是,通过这样做,我失去了基于约定的映射提供的可维护性改进。

4

1 回答 1

0

这并不能完全回答这个问题,但我最终得出结论,在这样的场景中不使用 AutoMapper 会更容易。在不使用 AutoMapper 的情况下编写一个接收一个对象并创建另一个对象的实例的方法很简单:

Destination Map(Source source)
{
    return new Destination(source.Name, source.Code);
}
于 2013-11-25T22:19:49.103 回答