开发者

Can't pass parameter to Windsor Typed Factory Facility

开发者 https://www.devze.com 2023-02-19 06:55 出处:网络
I\'ve got a IRunningTaskFactory which is registered with Windsor AsFactory() using the Typed Factory Facility.The interface has a single method that looks like this:

I've got a IRunningTaskFactory which is registered with Windsor AsFactory() using the Typed Factory Facility. The interface has a single method that looks like this:

RunningTask Create(ITask task);

Where RunningTask is registered with Windsor as being transient has a constructor:

public RunningTask(ITask task, ITaskConfigurationFactory task开发者_JS百科ConfigurationFactory)

where ITaskConfigurationFactory is registered with Windsor as well.

The problem I'm running into is that when I call the Create method and pass an ITask along I get the following error:

Castle.MicroKernel.Resolvers.DependencyResolverException : Missing dependency. Component Husky.nHuskyTasker.Core.Tasks.RunningTask has a dependency on Husky.nHuskyTasker.Core.Tasks.ITask, which could not be resolved. Make sure the dependency is correctly registered in the container as a service, or provided as inline argument

From what I read in the documentation this should be working.

Thoughts?


I had the same problem (runtime parameter into a typed factory not resolving) and it turned out to be because the parameter name on my factory and the name of the constructor parameter on the actual class were different, so when calling .Create() on the typed factory it couldn't resolve my parameter.

This thread solved by issue: Can Castle.Windsor TypedFactoryFacility construct a type with only some ref arguments passed inline?

Not obvious, but it makes sense.


I found that if you specify a dummy registration for the type with variable instances then your parameter gets passed in without errors:

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

But I agree, this should work without having to have that mock implementation and extra registration.

Note that registering ITask will have the side-effect of Windsor auto-wiring any public properties involving that type, which you may need to suppress

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号