References
June 13, 2021 · View on GitHub
基本用法
| 方法 | 说明 | 链接 |
|---|---|---|
src.Adapt<Dest>() | 映射到新类型 | 基本用法 |
src.Adapt(dest) | 映射到现有对象 | 基本用法 |
query.ProjectToType<Dest>() | 映射 IQueryable | |
| 约定和数据类型支持 | 数据类型 |
Mapper 实例(用于依赖注入)
| 方法 | 说明 | 链接 |
|---|---|---|
IMapper mapper = new Mapper() | 创建映射器实例 | 映射器 |
mapper.Map<Dest>(src) | 映射到新类型 | |
mapper.Map(src, dest) | 映射到现有对象 |
Builder (用于复杂映射)
| 方法 | 说明 | 链接 |
|---|---|---|
src.BuildAdapter() mapper.From(src) | 创建 builder | 映射器 |
.ForkConfig(config => ...) | 内联配置 | 映射配置位置 |
.AddParameters(name, value) | 传递动态值 | 设置值 |
.AdaptToType<Dest>() | 映射到新类型 | |
.AdaptTo(dest) | 映射到现有对象 | |
.CreateMapExpression<Dest>() | 获取映射表达式树对象 | |
.CreateMapToTargetExpression<Dest>() | 获取映射到现有对象的表达式树对象 | |
.CreateProjectionExpression<Dest>() | 获取映射 IQueryable 的表达式树对象 |
配置
| 方法 | 说明 | 链接 |
|---|---|---|
TypeAdapterConfig.GlobalSettings | 全局配置 | 映射配置 |
var config = new TypeAdapterConfig() | 创建新的配置实例 | 映射配置实例 |
src.Adapt<Dest>(config) | 映射到新类型并指定配置 | |
new Mapper(config) | 指定映射器的配置 | |
src.BuildAdapter(config) | 指定Builder的配置 | |
config.RequireDestinationMemberSource | 验证所有属性的映射 | 映射配置验证 |
config.RequireExplicitMapping | 是否开启强制显示映射配置 | 映射配置验证 |
config.AllowImplicitDestinationInheritance | 使用基于 目标类 的配置 | 映射配置继承 |
config.AllowImplicitSourceInheritance | 使用基于 源类 的配置 | 映射配置继承 |
config.SelfContainedCodeGeneration | 在 1 个方法中生成所有嵌套映射 | TextTemplate |
config.Compile() | 验证映射配置并缓存映射 | 映射配置验证 |
config.CompileProjection() | 验证 IQueryable 映射配置并缓存映射 | |
config.Clone() | 复制配置 | 映射配置位置 |
config.Fork(forked => ...) | 内联配置 | 映射配置位置 |
扫描配置
| 方法 | 说明 | 链接 |
|---|---|---|
IRegister | 映射配置扫描接口 | 映射配置位置 |
config.Scan(...assemblies) | 扫描程序集中的映射配置 | 映射配置位置 |
config.Apply(...registers) | 应用 映射配置 | 映射配置位置 |
定义映射配置
| 方法 | 说明 | 链接 |
|---|---|---|
config.Default | 配置应用于所有类型映射 | 映射配置 |
TypeAdapterConfig<Src, Dest>.NewConfig() config.NewConfig<Src, Dest>() | 创建应用于特定类型映射的配置 | 映射配置 |
TypeAdapterConfig<Src, Dest>.ForType() config.ForType<Src, Dest>() | 配置应用于特定类型映射 | 映射配置 |
config.ForType(typeof(GenericPoco<>),typeof(GenericDto<>)) | 配置应用于泛型类型映射 | 映射配置 |
config.When((src, dest, mapType) => ...) | 配置根据条件进行的类型映射 | 映射配置 |
config.ForDestinationType<Dest>() | 配置应用于特定目标类型 | 映射配置 |
| 嵌套映射的配置 | 嵌套映射 |
配置
| 方法 | 说明 | 支持 IQueryable | 链接 |
|---|---|---|---|
AddDestinationTransform | 清除特定类型的数据 | x | 设置值 |
BeforeMapping | 在映射开始之前的步骤 | 映射前&映射后 | |
AfterMapping | 映射完成之后的步骤 | 映射前&映射后 | |
AvoidInlineMapping | 对于大型类型映射,跳过内联处理 | 对象引用 | |
ConstructUsing | 定义如何创建对象 | x | 构造函数 |
EnableNonPublicMembers | 映射非公开成员 | 映射非公开成员 | |
EnumMappingStrategy | 选择按值还是按名称映射枚举 | 数据类型 | |
Fork | 在主配置上添加没有副作用的新配置 | x | 嵌套映射 |
GetMemberName | 定义如何解析成员名 | x | 自定义成员名称 |
Ignore | 忽略特定属性 | x | 映射忽略 |
IgnoreAttribute | 忽略属性上特定的特性标记 | x | 特性标记 |
IgnoreIf | 忽略表达式 | x | 根据条件映射忽略 |
IgnoreMember | 忽略设置规则 | x | 基于规则 |
IgnoreNonMapped | 忽略 Map 中未定义的所有属性 | x | 映射忽略 |
IgnoreNullValues | 如果 源属性 为空,则不映射 | 浅映射和合并映射 | |
Include | 映射包含派生类型 | 映射配置继承 | |
IncludeAttribute | 包括在属性上注释的特定的特性标记 | x | 特性标记 |
IncludeMember | 包含的配置规则 | x | 基于规则 |
Inherits | 复制基类的映射配置 | x | 映射配置继承 |
Map | 定义属性映射 | x | 自定义映射 |
MapToConstructor | 构造函数映射 | x | 构造函数 |
MapToTargetWith | 定义如何映射到现有对象 | 自定义映射 | |
MapWith | 定义如何映射 | x | 自定义映射 |
MaxDepth | 定义映射最大深度 | x | 对象引用 |
NameMatchingStrategy | 定义如何解析属性的名称 | x | 自定义成员名称 |
PreserveReference | 映射时追踪引用 | 对象引用 | |
ShallowCopyForSameType | 如果源类型与目标类型相同,直接分配而不是深度克隆 | 浅映射和合并映射 | |
TwoWays | 定义双向映射 | x | 双向 & 逆扁平映射 |
Unflattening | 逆扁平映射 | x | 双向 & 逆扁平映射 |
UseDestinationValue | 使用现有属性对象映射数据 | 映射只读属性 |
Attributes
| 特性 | 说明 | 链接 |
|---|---|---|
[AdaptMember(name)] | 设置属性映射的目标的属性名称 | 基于Attribute的配置 |
[AdaptIgnore(side)] | 映射时忽略成员 | 基于Attribute的配置 |
[UseDestinationValue] | 使用现有属性对象映射数据 | 基于Attribute的配置 |
[AdaptTo] [AdaptFrom] [AdaptTwoWays] | 在POCO类上添加设置 | 映射配置位置 |
[Mapper] [GeneratMapper] [PropertyType] | 为代码生成定义设置 | Mapster.Tool |
插件库
| 名称 | 方法 | 说明 |
|---|---|---|
| Async | setting.AfterMappingAsync builder.AdaptToTypeAsync | 对映射执行异步操作 |
| Debugging | config.Compiler = exp => exp.CompileWithDebugInfo() | 编译以允许步进调试 |
| Dependency Injection | MapContext.Current.GetService<IService>() | 依赖注入获取映射服务 |
| EF 6 & EF Core | builder.EntityFromContext | 将数据复制到跟踪的EF实体 |
| FEC | config.Compiler = exp => exp.CompileFast() | 编译使用FastExpressionCompiler |
| Immutable | config.EnableImmutableMapping() | 映射到 immutable collection(只读集合.md) |
| Json.net | config.EnableJsonMapping() | 映射JSON对象到实体类或字符串;映射实体类或字符串到 JSON 对象 |
代码生成器
| 插件 | 工具 | 说明 |
|---|---|---|
| Mapster.Tool | dotnet mapster | 生成 DTO 并在构建时映射代码 |
| TextTemplate | t4 | 使用 T4 生成映射代码 |