Разрешение вложенных параметров в Autofac - PullRequest
0 голосов
/ 07 февраля 2020

Когда Autofa c пытается создать один из моих объектов, это терпит неудачу. Ошибка - это разрешение вложенного объекта в цепочке, в котором отсутствует параметр конструктора. Я предоставил параметр для вызова разрешения, используя NamedParameters:

  var messageHandlers = _diScope.Resolve<IEnumerable<IAggMessageHandler>>(
                new NamedParameter("publishers", _publishers),
                new NamedParameter("stoppingToken", _stoppingToken)
                );

Вот возвращаемая ошибка:

An exception occurred, Autofac.Core.DependencyResolutionException: An exception was thrown while activating λ:AggCommon.Interfaces.IAggMessageHandler[] -> RenPostAgg.EanSignalHighPrioMessageHandler -> λ:AggCommon.Interfaces.IAlgorithm[] ->  AggAlgoA1.AlgorithmA1. ---> Autofac.Core.DependencyResolutionException: None of the constructors found with 'Autofac.Core.Activators.Reflection.DefaultConstructorFinder' on type 'AggAlgoA1.AlgorithmA1' can be invoked with the available services and parameters:
Cannot resolve parameter 'System.Threading.CancellationToken stoppingToken' of constructor 'Void .ctor(Autofac.ILifetimeScope, AggCommon.Interfaces.IAggSettings, Microsoft.Extensions.Logging.ILogger`1[AggAlgoA1.AlgorithmA1], System.Threading.CancellationToken)'.

Конструктор объекта Lasts в цепочке:

public AlgorithmA1(ILifetimeScope container, IAggSettings settings, ILogger<AlgorithmA1> logger, CancellationToken stoppingToken)

Будет ли Autofa c использовать предоставленный параметр для создания вложенного объекта или мне нужно убедиться, что все конструкторы на всех объектах в цепочке, кроме параметра, и передать его вместе?

Спасибо

-мар c

...