3

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?

Ilya Kogan
  • 21,366
  • 15
  • 81
  • 136

2 Answers2

6

CreationContext.AdditionalParameters has the values you pass to Resolve

Krzysztof Kozmic
  • 26,970
  • 12
  • 70
  • 115
2

You just have to use

container.Register(
    Component.For<IFoo>()
        .UsingFactoryMethod((kernel, creationContext) =>
        {
            var parameter = creationContext.AdditionalArguments["parameter"];
            return DoSomethingAndReturnInstance(parameter);
        }));