2013-07-27 1 views
1

Я хочу выбрать конкретную привязку, основанную на значении конфигурации, для аргументов, скажем, у меня есть два конкретных класса, называемые Action1 и Action2. В настоящее время я перехожу в ядро ​​Ninject к фабрике и возвращают связанный тип, основанный на этом.Ninject C# - получить конкретный тип во время выполнения из конфигурации чтения

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

Непосредственно впрыскивать формируемое действие и настроить их условно:

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

Здравствуйте Remo, спасибо за ответ. Я не знаю, является ли это работоспособным (или даже даже возможностью с Ninject) для меня, поскольку конфигурация является сложным типом, полученным в службе, и привязки выполняются при инициализации службы без какого-либо знания сложного типа конфигурации, извлекается в службе далее вниз по стеку. Я не думаю, что то, что я хочу, возможно, мне может потребоваться переосмыслить мой поток. –

Смежные вопросы