我有一个IRunningTaskFactory,它使用类型化工厂设施向Windsor AsFactory()注册。该接口具有如下所示的单个方法:

RunningTask Create(ITask task);


向Windsor注册的RunningTask是瞬态的,具有构造函数:

public RunningTask(ITask task, ITaskConfigurationFactory taskConfigurationFactory)


ITaskConfigurationFactory也在温莎注册的地方。

我遇到的问题是,当我调用Create方法并传递ITask时,出现以下错误:


Castle.MicroKernel.Resolvers.DependencyResolverException
:缺少依赖项。零件
Husky.nHuskyTasker.Core.Tasks.RunningTask
有依赖
Husky.nHuskyTasker.Core.Tasks.ITask,
无法解决。确保
依赖项已正确注册
在容器中作为服务,或
作为内联参数提供


根据我在文档中阅读的内容,这应该可以正常工作。

有什么想法吗?

最佳答案

我发现,如果您为带有变量实例的类型指定了虚拟注册,则您的参数将正确无误地传入:

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


但是我同意,this should work不必进行模拟实现和额外注册。

请注意,注册ITask将产生Windsor自动装配涉及该类型的任何公共属性的副作用,您可能需要取消

10-08 01:21