Передача параметров в UsingFactoryMethod в Castle Windsor - PullRequest
3 голосов
/ 28 марта 2011

Как передать динамические параметры в UsingFactoryMethod регистрацию?

Например, я хочу написать что-то вроде:

container.Register(
   Component.For<IFoo>()
        .UsingFactoryMethod(return DoSomethingAndReturnInstance(paremeter)));

Мне нужно, чтобы параметры отправлялись во время выполнения, например:

container.Resolve<IFoo>(new { parameter = value });

Как это можно сделать?

Ответы [ 2 ]

5 голосов
/ 28 марта 2011

CreationContext.AdditionalParameters содержит значения, которые вы передаете Resolve

1 голос
/ 11 октября 2017

Вы просто должны использовать

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