私はNinjectを使っている初心者です。私はジェネリックhttpハンドラにどのように注入するのか分かりません。私はMVC3プロジェクトを持っていて、問題なくコントローラにサービスを注入しています。 これは私がサービスを登録するための私のNinject App_startクラスで得たものである:Ninjectを使っていくつかの一般的なasp.net httpハンドラにどのように注入するのですか?
private static void RegisterServices(IKernel kernel)
{
kernel.Bind<NLSubscriber.Core.Service.Repository.INLUserRepository>().To<NLSubscriber.Core.Service.Repository.EFDAL.EFNLUserRepository>().InRequestScope();
kernel.Bind<Neticon.Mvc.Helpers.IConfigHelper>().To<Neticon.Mvc.Helpers.AzureEnabledConfigHelper>().InSingletonScope();
kernel.Bind<Neticon.Security.Service.IAuthenticationService>().ToMethod(m => Neticon.Security.Service.SecurityServiceFactory.CreateAuthenticationService()).InRequestScope();
kernel.Bind<Neticon.Security.Service.IMembershipService>().ToMethod(m => Neticon.Security.Service.SecurityServiceFactory.CreateMembershipService()).InRequestScope();
kernel.Bind<Neticon.Security.Service.IRoleManagerService>().ToMethod(m => Neticon.Security.Service.SecurityServiceFactory.CreateRoleManagerService()).InRequestScope();
私は([インジェクト]属性で)プロパティインジェクションを使用して、私のジェネリックハンドラからいくつかのサービスを取得しようとすると、私は常にnullを取得します。これは私のハンドラはどのように見えるかです:
readonly INLUserRepository userRep;
public SubscriberHandler()
{
using (IKernel kernel = new StandardKernel(new App_Start.NJRepositoryModule()))
{
userRep = kernel.Get<INLUserRepository>();
}
}
が、私は例外を取得しています:
public class SubscriberHandler : IHttpHandler
{
[Inject]
public INLUserRepository userRep { get; set;}
public void ProcessRequest(HttpContext context)
{
var users = userRep.GetUsers(); //userRep is always null here
}
public bool IsReusable
{
get
{
return false;
}
}
}
また、私はこのようにそれをやって試してみました。「エラーがNinjectコンポーネントの命令キャッシュを搭載んが、そのような部品はありません 提案: 1)KernelBaseのカスタムサブクラスを作成した場合、適切に がAddComponents()メソッドを実装していることを確認してください。 2)コンポーネントをコンポーネントのコンテナから削除していないことを確認してください。コンテナを呼び出すすべて削除する()。 3)あなたが誤って複数のカーネルを作成していないことを確認してください。」私は右、私のアプリケーションで複数のカーネルをインスタンス化することになっていないよということ? は、私が間違って何をしているのですか? おかげ
私を示唆だを
可能な複製http://stackoverflow.com/questions/3629472/httphandler-property-injection-using-ninject-returning-null – Andreas