2012-10-02 53 views
0

我在Ninject.MVC RegisterServices以下行:Ninject.Extensions.Factory:無法找到結合

kernel.Load(new NinjectBllModule()); 
kernel.Bind<IMembershipLogicFactory>().ToFactory(); 

和我的模塊裏面:

Bind<IUserLogic<LoginUser>>().To<UserLogic>(); 
Bind<IRoleLogic<SimpleRole, LoginUser>>().To<RoleLogic>(); 

和我IMembershipLogicFactory:

public interface IMembershipLogicFactory 
{ 
    IUserLogic<TUser> GetUserLogic<TUser>() where TUser : UserBase; 
    IRoleLogic<TRole, TUser> GetRoleLogic<TRole, TUser>() where TRole : RoleBase<TUser> where TUser : UserBase<TRole>; 
} 

但是當我注入IMembershipLogicFactory並調用GetUserLogic()時,我得到以下e rror:

Error activating IUserLogic{LoginUser} 
No matching bindings are available, and the type is not self-bindable. 
Activation path: 
1) Request for IUserLogic{LoginUser} 

我似乎無法找到我做錯了什麼。

回答

3

該擴展使用約定,以Get解析命名的綁定開始的方法。 GetUserLogic因此將被翻譯爲

kernel.Get<IUserLogic<LoginUser>>("UserLogic"); 

其中沒有定義綁定。只需使用另一個方法名稱,如CreateUserLogic

+0

oooh,我錯過了。它是否寫在文檔的某個地方?它可以「關閉」嗎? – TDaver