动态注入来自程序集的存储库

| 我在用着: EF 4.1 MVC 3 Ninject Ninject.Extensions.Convention Ninject.Web.Mvc 该应用程序使用存储库模式。 我的存储库可以这样注入:
kernel.Bind<ICategoryRepository>().To<CategoryRepository>().InRequestScope();
一切都很好:-) 但是我一直想通过在我的global.asax.cs中从这样的程序集动态注入来进一步
private static void LoadFromAssemblies(IKernel kernel)
{
    Uri uri = new Uri(
      Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase) +
      @\"\\Extensions\");
    DirectoryInfo directoryInfo = new DirectoryInfo(uri.LocalPath);

    var scanner = new AssemblyScanner();

    scanner.FromAssembliesInPath(directoryInfo.FullName);
    scanner.BindWith<DefaultBindingGenerator>();
    kernel.Scan(scanner);

    //var foo = kernel.Get<ICategoryRepository>();
}
在运行时确实注入了存储库,但是由于某种原因,该实体从未被保存-也许是因为存储库无法告知是否存在更改?还是没有在整个请求中维护工作单元? 我的问题是:从程序集动态加载时,如何实现\“ InRequestScope \”?我是否必须以某种方式注入内核?     
已邀请:
这种方法(标记为
***
)回答并解决了该问题(从@John Barrett的评论复制):
kernel.Scan(a =>
  {
    a.FromAssembliesInPath(directoryInfo.FullName);
    a.AutoLoadModules();
    a.BindWithDefaultConventions();
    a.InRequestScope();  // <-- ***
  });
    

要回复问题请先登录注册