Ninject基础class和继承class绑定到同一个实例

Ninject base class and inheriting class bind to the same instance

我有一个将 DbContext 作为构造函数参数的通用存储库。要注入它,我的绑定看起来是这样的:

Bind<DbContext>().To<MyApplicationsContext>().InRequestScope();

我也有自定义存储库,它直接将 MyApplicationContext 作为构造函数参数。我如何编写这样的绑定,无论存储库请求基础 class DbContext 还是继承 class MyApplicationContext,它都会获得相同的实例 InRequestScope?

您要使用的是 Bind<>() 方法的重载。

在您的情况下,您的代码将是:

Bind<DbContext, MyApplicationsContext>().To<MyApplicationsContext>().InRequestScope();

如果您想使用开放泛型或需要使用 System.Type 进行绑定,您可以使用此重载

Bind(typeof(DbContext), typeof(MyApplicationsContext))
    .To(typeof(MyApplicationsContext))
    .InRequestScope();