You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AutoMapper 8迁移至13:自定义解析器ConfigurationProvider报错修复

AutoMapper 13 自定义解析器获取映射配置的修复方案

在AutoMapper 13中,ResolutionContext不再直接包含ConfigurationProvider属性,这是框架后续版本对上下文结构重构导致的。你可以通过以下两种方式修复获取类型映射的逻辑:

方式1:通过ResolutionContext.Mapper获取配置提供者

直接从上下文的Mapper属性(类型为IMapper)中访问ConfigurationProvider,代码修改如下:

public string Resolve(TSource source, TDestination destination, string destMember, ResolutionContext context)
{
    // 替换原有的context.ConfigurationProvider
    var tp = context.Mapper.ConfigurationProvider.FindTypeMapFor<TSource, TDestination>();
    
    // 你的后续业务逻辑...
}

方式2:通过依赖注入直接注入配置提供者

如果你的自定义解析器支持依赖注入,推荐直接在构造函数中注入IMapperConfigurationProvider,这种方式更符合DI设计原则,也避免了从上下文间接获取的依赖:

public class YourCustomResolver<TSource, TDestination> : IValueResolver<TSource, TDestination, string>
{
    private readonly IMapperConfigurationProvider _configProvider;

    // 构造函数注入配置提供者
    public YourCustomResolver(IMapperConfigurationProvider configProvider)
    {
        _configProvider = configProvider;
    }

    public string Resolve(TSource source, TDestination destination, string destMember, ResolutionContext context)
    {
        var tp = _configProvider.FindTypeMapFor<TSource, TDestination>();
        
        // 你的后续业务逻辑...
    }
}

注意事项

  • 若使用方式2,需要确保你的DI容器已正确注册IMapperConfigurationProvider(通常通过AddAutoMapper扩展方法注册AutoMapper时会自动完成)。
  • 注册自定义解析器时,要确保解析器本身被注册到DI容器中,或者在Profile中使用ConstructedBy指定构造方式。

内容的提问来源于stack exchange,提问作者Kaushik Thanki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 20:26:01