将参数传递给Castle Windsor中的UsingFactoryMethod

时间:2011-03-28 00:52:33

标签: c# .net castle-windsor ioc-container castle

如何将动态参数传递给UsingFactoryMethod注册?

例如,我想写一些类似的东西:

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

我需要在运行时发送参数,如下所示:

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

怎么做?

2 个答案:

答案 0 :(得分:5)

CreationContext.AdditionalParameters包含您传递给Resolve

的值

答案 1 :(得分:1)

你只需要使用

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