问题
How do I pass dynamic parameters to a UsingFactoryMethod
registration?
For example, I want to write something like:
container.Register(
Component.For<IFoo>()
.UsingFactoryMethod(return DoSomethingAndReturnInstance(paremeter)));
I need the parameters to be sent at runtime, like this:
container.Resolve<IFoo>(new { parameter = value });
How can it be done?
回答1:
CreationContext.AdditionalParameters
has the values you pass to Resolve
回答2:
You just have to use
container.Register(
Component.For<IFoo>()
.UsingFactoryMethod((kernel, creationContext) =>
{
var parameter = creationContext.AdditionalArguments["parameter"];
return DoSomethingAndReturnInstance(parameter);
}));
来源:https://stackoverflow.com/questions/5453648/passing-parameters-to-usingfactorymethod-in-castle-windsor