【发布时间】:2011-03-24 16:14:36
【问题描述】:
我有一个 IRunningTaskFactory,它使用 Typed Factory Facility 在 Windsor AsFactory() 中注册。该接口有一个方法,如下所示:
RunningTask Create(ITask task);
在 Windsor 中将 RunningTask 注册为瞬态的地方有一个构造函数:
public RunningTask(ITask task, ITaskConfigurationFactory taskConfigurationFactory)
ITaskConfigurationFactory 也在 Windsor 中注册。
我遇到的问题是,当我调用 Create 方法并传递 ITask 时,我收到以下错误:
Castle.MicroKernel.Resolvers.DependencyResolverException : 缺少依赖。零件 Husky.nHuskyTasker.Core.Tasks.RunningTask 依赖于 Husky.nHuskyTasker.Core.Tasks.ITask, 无法解决。确保 依赖项已正确注册 在容器中作为服务,或 作为内联参数提供
根据我在文档中阅读的内容,这应该可以工作。
想法?
【问题讨论】:
-
现在我已经编写了自己的 RunningTaskFactory,它获取一个 IKernel 并使用提供的任务调用它,并且工作正常。根据文档,我没有做任何工厂不应该做的事情..
-
你仍然需要为 ITask 显式注册一个组件,我认为...
-
我不能。 ITask 有 N 个实现,我不希望它们访问我的容器。
-
他们不需要访问容器(他们不应该),但容器需要访问它们/了解它们。
-
如果他们在服务器上注册,他们可以通过将 IKernel 内核添加到他们的构造函数来访问服务器。
标签: .net dependency-injection castle-windsor