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 に答える