0

Ninjectを使用してプロジェクトにDIを設定しました。UserControllerの例を次に示します。

private readonly IRoleRepository roleRepository;
private readonly IUserRepository userRepository;

public UserController(IUserRepository userRepository, IRoleRepository roleRepository)
{
    this.roleRepository = roleRepository;
    this.userRepository = userRepository;
}

私のNinjectWebCommon.csファイルには、次のものがあります。

private static void RegisterServices(IKernel kernel)
{
    kernel.Bind<IControllerFactory>().To<DefaultControllerFactory>();
    kernel.Bind<IUnitOfWork>().To<PortalContext>().InSingletonScope();
    kernel.Bind<IUserRepository>().To<UserRepository>();
    kernel.Bind<IRoleRepository>().To<RoleRepositoroy>();
}    

ただし、ユーザーとロールのリポジトリをカスタムメンバーシッププロバイダーに挿入する方法がわからないようです。私はここで壁にぶつかったので、どんな助けでも大歓迎です。リポジトリと作業単位のパターンでAsp.netMVC4とEF4を使用しています。ありがとう。

4

3 に答える 3

0

プロパティインジェクションを使用できます

[Inject]
public IUserRepository userRepository {get;set;};

ただし、MembershipProviderクラスはシングルトンであり、そのスコープはアプリケーションの存続期間であるため、DBContextのスコープには注意する必要があります。

于 2012-06-07T15:28:06.190 に答える
0

簡単な解決策として、Ninjectを使用してプロパティインジェクトすることができます。

[Inject]
public IUserRepository UserRepository {get;set;}
于 2012-06-07T15:28:18.877 に答える
0

@feanz、あなたの質問に関して:

@BBauer42奇数。MVCアプリケーションの別のプロジェクトのプロバイダーですか?

カスタムプロバイダーが別のプロジェクト(クラスライブラリ)にある場合、何を変える必要がありますか?

于 2014-01-27T05:02:34.833 に答える