AutoMapper可以将源成员映射的目标构造函数:

    1. public class Source {
    2. public int Value { get; set; }
    3. }
    4. public class SourceDto {
    5. public SourceDto(int value) {
    6. _value = value;
    7. }
    8. private int _value;
    9. public int Value {
    10. get { return _value; }
    11. }
    12. }
    13. var configuration = new MapperConfiguration(cfg => cfg.CreateMap<Source, SourceDto>());

    如果参数名不匹配:

    1. public class Source {
    2. public int Value { get; set; }
    3. }
    4. public class SourceDto {
    5. public SourceDto(int valueParamSomeOtherName) {
    6. _value = valueParamSomeOtherName;
    7. }
    8. private int _value;
    9. public int Value {
    10. get { return _value; }
    11. }
    12. }
    13. var configuration = new MapperConfiguration(cfg =>
    14. cfg.CreateMap<Source, SourceDto>()
    15. .ForCtorParam("valueParamSomeOtherName", opt => opt.MapFrom(src => src.Value))
    16. );

    您还可以禁用构造函数映射:

    1. var configuration = new MapperConfiguration(cfg => cfg.DisableConstructorMapping());

    您可以配置将哪些构造函数用于目标对象:

    1. // don't map private constructors
    2. var configuration = new MapperConfiguration(cfg => cfg.ShouldUseConstructor = ci => !ci.IsPrivate);