jk's notes
  • 构造函数

构造函数

AutoMapper 可以利用源类型的成员, 映射到目标类型的构造函数上. 配置与用法不变.

使用场景(属性没有 setter, 通过构造函数来初始化时)

但是如果构造函数的参数名与源类型的属性名不一致, 就需要配置了:

var config = new MapperConfiguration(cfg => {
  cfg.CreateMap<Source, Destination>()
    .ForCtorParam("构造函数的参数名", opt => opt.From(src => src.XXX));
});

它也适用于 LINQ 投影与内存映射.

也可以配置禁用构造函数映射, 或配置哪些构造函数需要映射:

// 禁用
var configuration = new MapperConfiguration(cfg => cfg.DisableConstructorMapping());

// 只处理 public 构造函数
var configuration = new MapperConfiguration(cfg => cfg.ShouldUseConstructor = constructor => constructor.IsPublic);

如果映射到 Record, 考虑使用 public 构造函数.

Last Updated:
Contributors: jk