Ninject C# - 从读取配置中获取运行时的具体类型

时间:2013-07-27 18:58:10

标签: c# dependency-injection ninject

我想根据配置值选择一个特定的绑定,为了论证,让我们说我有两个叫做Action1和Action2的具体类。目前,我将Ninject内核传递到工厂并根据该返回绑定类型。

 public class ActionFactory: IActionFactory
    {
        public IAction GetAction(IKernel kernel, string actionName)
        {
            return kernel.Get<IAction>(actionName);
        }
    }

我正在绑定Ninject模块中的动作,如下所示:

Bind<IAction>().To<Action1>().Named("Action1");
Bind<IAction>().To<Action2>().Named("Action2");

我可以绑定它而不必将内核传递给工厂吗?

如果有人有任何建议,我也有能力重构工作流程。

1 个答案:

答案 0 :(得分:1)

直接注入配置的操作并将其配置为条件:

Bind<IAction>().To<Action1>().When(ctx => IsAction1Configured());
Bind<IAction>().To<Action2>().When(ctx => IsAction2Configured());