2013-07-27 49 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

聖雷莫您好,感謝回答。我不知道這對我來說是否可行(或者甚至是Ninject的可能性),因爲配置是在服務中檢索的複雜類型,綁定是在服務初始化時完成的,而不需要任何配置複雜類型的知識在服務棧中進一步檢索。我不認爲我想要的是可能的,我可能需要重新思考我的問題。 –