请解释在 C# 中利用 AutoMapper 实现对象映射的具体方式有哪些?
考察说明
考查对 AutoMapper 核心用法的掌握程度,包括配置、映射执行及常见场景。
回答思路
- 【回答框架 1】AutoMapper 是 C# 中用于对象间映射的库,核心思路是通过约定和配置减少手动赋值。基本用法是创建 MapperConfiguration 并指定映射对,例如 CreateMap<Source, Destination>()。
- 【回答框架 2】执行映射时,通过 IMapper 接口调用 Map 方法,如 mapper.Map<Destination>(source) 或使用非泛型重载。若依赖注入可用,可将 IMapper 注册到容器中。
- 【回答框架 3】对于属性名不一致或需要自定义逻辑的映射,可使用 ForMember 配置,例如 cfg.CreateMap<Source, Destination>().ForMember(dest => dest.DestProp, opt => opt.MapFrom(src => src.SourceProp))。
- 【回答框架 4】支持复杂类型、集合和嵌套映射,默认按约定匹配属性名。若需要忽略属性、条件映射或值转换,可使用相应配置选项。
- 【关键点 1】需先创建 MapperConfiguration 并调用 CreateMap 配置映射对。
- 【关键点 2】通过 IMapper 接口的 Map 方法执行映射。
- 【关键点 3】可用 ForMember 自定义属性映射逻辑。
- 【关键点 4】集合和嵌套映射默认支持,注意循环引用避免死循环。
- 【易错点 1】忘记调用 AssertConfigurationIsValid 可能导致配置错误在运行时才暴露。
- 【易错点 2】过度使用 AutoMapper 处理简单映射可能降低可读性,应权衡手动赋值。
- 【易错点 3】映射循环引用时需配置 MaxDepth 或指定引用处理方式。