无法将参数传递给Windsor Typed Factory Facility

时间:2011-03-24 16:14:36

标签: .net dependency-injection castle-windsor

我有一个使用Typed Factory Facility在Windsor AsFactory()注册的IRunningTaskFactory。界面有一个如下所示的方法:

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,   无法解决。确保   依赖关系已正确注册   在容器中作为服务,或   作为内联参数提供

根据我在文档中看到的内容,这应该是有用的。

思想?

2 个答案:

答案 0 :(得分:5)

我有同样的问题(运行时参数进入一个未解析的类型工厂),结果是因为我工厂的参数名称和实际类的构造函数参数的名称不同,所以在调用.Create时()在打字的工厂上,它无法解析我的参数。

此问题通过问题解决: Can Castle.Windsor TypedFactoryFacility construct a type with only some ref arguments passed inline?

不明显,但这是有道理的。

答案 1 :(得分:1)

我发现如果你为带有变量实例的类型指定虚拟注册,那么你的参数会被传入而没有错误:

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

但我同意,this should work无需进行模拟实施和额外注册。

请注意,注册ITask会产生Windsor的副作用,自动连接涉及该类型的任何公共属性,您可能需要禁止