我想根据配置值选择一个特定的绑定,为了论证,让我们说我有两个叫做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");
我可以绑定它而不必将内核传递给工厂吗?
如果有人有任何建议,我也有能力重构工作流程。
答案 0 :(得分:1)
直接注入配置的操作并将其配置为条件:
Bind<IAction>().To<Action1>().When(ctx => IsAction1Configured());
Bind<IAction>().To<Action2>().When(ctx => IsAction2Configured());