1

我的 Ninject.MVC RegisterServices 中有以下行:

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() 时,我收到以下错误:

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

而且我似乎找不到我做错了什么。

4

1 回答 1

4

该扩展使用以 Get 开头的方法解析命名绑定的约定。GetUserLogic 将因此被翻译成

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

没有定义绑定。只需使用另一个方法名称,例如 CreateUserLogic

于 2012-10-02T09:24:18.110 回答