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 constructors
var configuration = new MapperConfiguration(cfg => cfg.ShouldUseConstructor = ci => !ci.IsPrivate);