Asp.net core 将应用程序从netcore 2更新为3 can';不要使用自动制版机

Asp.net core 将应用程序从netcore 2更新为3 can';不要使用自动制版机,asp.net-core,automapper,Asp.net Core,Automapper,我将我的应用程序更新到了NetCore3,当我运行应用程序时,我发现了一个错误 关于汽车制造商(至少我是说) 我已经更新了运行dotnet-outdate的相对库,然后更新了依赖项 Unhandled exception. System.AggregateException: Some services are not able to be constructed (Error while validating the service descriptor 'ServiceType: MyDem

我将我的应用程序更新到了NetCore3,当我运行应用程序时,我发现了一个错误 关于汽车制造商(至少我是说)

我已经更新了运行dotnet-outdate的相对库,然后更新了依赖项

Unhandled exception. System.AggregateException: Some services are not able to be constructed (Error while validating the service descriptor 'ServiceType: MyDemo.Models.Mapping.Resolvers.DefaultResolver Lifetime: Transient ImplementationType: MyDemo.Models.Mapping.Resolvers.DefaultResolver': Unable to resolve service for type 'System.String' while attempting to activate 'MyDemo.Models.Mapping.Resolvers.DefaultResolver'.) (Error while validating the service descriptor 'ServiceType: MyDemo.Models.Mapping.Resolvers.MoneyResolver Lifetime: Transient ImplementationType: MyDemo.Models.Mapping.Resolvers.MoneyResolver': Unable to resolve service for type 'System.String' while attempting to activate 'MyDemo.Models.Mapping.Resolvers.MoneyResolver'.) (Error while validating the service descriptor 'ServiceType: MyDemo.Models.Mapping.Resolvers.TimeSpanResolver Lifetime: Transient ImplementationType: MyDemo.Models.Mapping.Resolvers.TimeSpanResolver': Unable to resolve service for type 'System.String' while attempting to activate 'MyDemo.Models.Mapping.Resolvers.TimeSpanResolver'.)
 ---> System.InvalidOperationException: Error while validating the service descriptor 'ServiceType: MyDemo.Models.Mapping.Resolvers.DefaultResolver Lifetime: Transient ImplementationType: MyDemo.Models.Mapping.Resolvers.DefaultResolver': Unable to resolve service for type 'System.String' while attempting to activate 'MyDemo.Models.Mapping.Resolvers.DefaultResolver'.
 ---> System.InvalidOperationException: Unable to resolve service for type 'System.String' while attempting to activate 'MyDemo.Models.Mapping.Resolvers.DefaultResolver'.
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.CreateArgumentCallSites(Type serviceType, Type implementationType, CallSiteChain callSiteChain, ParameterInfo[] parameters, Boolean throwIfCallSiteNotFound)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.CreateConstructorCallSite(ResultCache lifetime, Type serviceType, Type implementationType, CallSiteChain callSiteChain)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.TryCreateExact(ServiceDescriptor descriptor, Type serviceType, CallSiteChain callSiteChain, Int32 slot)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.CallSiteFactory.GetCallSite(ServiceDescriptor serviceDescriptor, CallSiteChain callSiteChain)
   at Microsoft.Extensions.DependencyInjection.ServiceLookup.ServiceProviderEngine.ValidateService(ServiceDescriptor descriptor)

    services.AddAutoMapper(typeof(Startup));

似乎是依赖项注入错误,但无法理解

对于您的
DefaultResolver
,它具有需要传递
字符串memberName
的构造函数

通常,有三种方式可供AutoMapper自定义值解析器使用

  • 映射自
  • 映射自(类型(CustomValueResolver))
  • 映射自(aValueResolverInstance)
对于,您需要尝试第三个选项,如:

var configuration = new MapperConfiguration(cfg => cfg.CreateMap<Source, Destination>()
    .ForMember(dest => dest.Total,
        opt => opt.MapFrom(new CustomResolver())
    ));
var配置=新的MapperConfiguration(cfg=>cfg.CreateMap()
.FormMember(目标=>目标总数,
opt=>opt.MapFrom(新的CustomResolver())
));

为什么解析器在其构造函数中接受字符串?这意味着它需要一个字符串依赖项。公共类DefaultResolver:IValueResolver{private readonly string memberName;公共DefaultResolver(string memberName){this.memberName=memberName;}公共对象解析(DataRow source、object destination、object destMember、ResolutionContext context){return source[memberName];}}}显然:)
在尝试激活“MyDemo.Models.Mapping.Resolver.DefaultResolver”时,无法解析类型为“System.String”的服务。
所以我应该做什么:(