Невозможно передать параметр в Виндзорский завод по производству машин - PullRequest
6 голосов
/ 24 марта 2011

У меня есть IRunningTaskFactory, который зарегистрирован в Windsor AsFactory () с использованием Typed Factory Facility. Интерфейс имеет единственный метод, который выглядит следующим образом:

RunningTask Create(ITask task);

Там, где RunningTask зарегистрирован в Windsor как временный, имеет конструктор:

public RunningTask(ITask task, ITaskConfigurationFactory taskConfigurationFactory)

, где ITaskConfigurationFactory также зарегистрирована в Windsor.

Проблема, с которой я сталкиваюсь, заключается в том, что при вызове метода Create и передаче ITask появляется следующая ошибка:

Castle.MicroKernel.Resolvers.DependencyResolverException Отсутствует зависимость. Составная часть Husky.nHuskyTasker.Core.Tasks.RunningTask имеет зависимость от Husky.nHuskyTasker.Core.Tasks.ITask, который не может быть решен. Удостовериться зависимость правильно зарегистрирована в контейнере как услуга, или предоставляется в виде встроенного аргумента

Из того, что я прочитал в документации, это должно работать.

Мысли

Ответы [ 2 ]

5 голосов
/ 06 мая 2015

У меня была та же проблема (параметр времени выполнения в типизированную фабрику не разрешается), и это произошло потому, что имя параметра на моей фабрике и имя параметра конструктора в реальном классе были разными, поэтому при вызове .Create() на типизированной фабрике не удалось разрешить мой параметр.

Этот поток решен с помощью проблемы: Может ли Castle.Windsor TypedFactoryFacility создать тип только с несколькими аргументами ref, передаваемыми в строке?

Не очевидно, но имеет смысл.

1 голос
/ 05 мая 2012

Я обнаружил, что если вы указываете фиктивную регистрацию для типа с переменными экземплярами, то ваш параметр передается без ошибок:

Component.For<ITask>().ImplementedBy<AnEmptyTask>()

Но я согласен, это должно сработать без необходимости такой фиктивной реализации и дополнительной регистрации.

Обратите внимание, что регистрация ITask будет иметь побочный эффект автоматического подключения Виндзора к любым общедоступным свойствам, связанным с этим типом, которые вам, возможно, придется подавить

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...