AutoMapper可以将源成员映射的目标构造函数:
public class Source {public int Value { get; set; }}public class SourceDto {public SourceDto(int value) {_value = value;}private int _value;public int Value {get { return _value; }}}var configuration = new MapperConfiguration(cfg => cfg.CreateMap<Source, SourceDto>());
如果参数名不匹配:
public class Source {public int Value { get; set; }}public class SourceDto {public SourceDto(int valueParamSomeOtherName) {_value = valueParamSomeOtherName;}private int _value;public int Value {get { return _value; }}}var configuration = new MapperConfiguration(cfg =>cfg.CreateMap<Source, SourceDto>().ForCtorParam("valueParamSomeOtherName", opt => opt.MapFrom(src => src.Value)));
您还可以禁用构造函数映射:
var configuration = new MapperConfiguration(cfg => cfg.DisableConstructorMapping());
您可以配置将哪些构造函数用于目标对象:
// don't map private constructorsvar configuration = new MapperConfiguration(cfg => cfg.ShouldUseConstructor = ci => !ci.IsPrivate);
