Automapper继承映射TaskBaseModel到ActivityModel时出现NullReferenceException
问题排查步骤
- 第一步先确认源对象
taskModel本身不为null,可在映射调用前加断点验证,若源对象为null会直接触发空引用异常。 - 检查
TaskBaseModel和ActivityModel类是否存在无参构造函数:AutoMapper默认构造目标类实例需要调用无参构造,若你仅为类定义了带参构造未声明无参构造,会触发映射时的空引用。 - 排查全局映射配置的干扰:如果你配置了全局的
BeforeMap/AfterMap/ForAllMembers等全局委托,即使单条映射配置忽略了所有属性,全局委托的逻辑依然会执行,若委托内有空对象访问逻辑就会抛异常。 - 验证AutoMapper初始化逻辑是否正确:如果使用静态
Mapper类,需确认启动时已经调用Mapper.Initialize方法加载了当前映射的Profile配置;如果使用依赖注入方式注入IMapper,需确认Profile已经正确注册到服务容器中。 - 检查属性的自定义访问器逻辑:若你的
TaskBaseModel或ActivityModel的任意属性get/set方法内写了自定义逻辑,且逻辑中存在未判空的对象访问,AutoMapper读写属性时就会触发空引用,和映射配置本身无关。 - 若以上步骤都未定位问题,可捕获映射调用的完整异常堆栈,通过堆栈信息确认AutoMapper内部执行到哪一步抛出异常,即可精准定位触发问题的代码位置。
内容的提问来源于stack exchange,提问作者MarchalPT
相关产品推荐
相关产品推荐

