Обновление приложения с netcore 2 до 3 не может использовать autopper - PullRequest
0 голосов
/ 04 ноября 2019

Я обновил свое приложение до net core 3, и когда я запускаю приложение, я получаю ошибку, касающуюся Automapper (по крайней мере, я имею в виду)

Я обновляю относительную библиотеку с помощью 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));

Кажется, ошибка внедрения зависимости, но не могу понять

1 Ответ

0 голосов
/ 05 ноября 2019

Для вашего DefaultResolver у него есть конструктор, которому нужно передать string memberName.

В общем, для AutoMapper существует три способа использования обработчика пользовательских значений

  • MapFrom
  • MapFrom (typeof (CustomValueResolver))
  • MapFrom (aValueResolverInstance)

Для Пользовательские методы конструктора , вам нужно попробоватьтретий вариант как:

var configuration = new MapperConfiguration(cfg => cfg.CreateMap<Source, Destination>()
    .ForMember(dest => dest.Total,
        opt => opt.MapFrom(new CustomResolver())
    ));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...