1

我想根据配置值选择一个特定的绑定,为了参数,假设我有两个具体的类,称为 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");

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

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

4

1 回答 1

1

直接注入配置的动作,并有条件地配置它们:

Bind<IAction>().To<Action1>().When(ctx => IsAction1Configured());
Bind<IAction>().To<Action2>().When(ctx => IsAction2Configured());
于 2013-07-28T03:36:19.467 回答