c# - 将 Ninject 与 ASP.NET MVC 和服务层结合使用

标签 c# asp.net-mvc ninject

我有一个 ASP.NET MVC 项目,它使用服务项目通过一组接口(interface)(项目)到达存储库项目。

我有点困惑在哪里使用 Ninject。在我看来,我将我的 Ninject 包含在服务层中似乎是合乎逻辑的,因为这是我与接口(interface)交互的地方。

我的问题是如何实现?另外,其他人是如何实现的?

最佳答案

在您的服务项目中,您需要创建一个派生自 NinjectModule 的类并覆盖 Load 方法;此类的职责是向 Ninject 注册您的依赖项。

public class ServiceModule : NinjectModule
{
    public override void Load() {
        Bind<IAccountService>().To<AccountService>();
    }
}

然后,您需要创建一个继承自 NinjectHttpApplication 的 Application 类。覆盖 CreateKernel 方法并从您的服务项目中注册 NinjectModule(以及您可能需要注册的任何其他方法)。

public class MvcApplication : NinjectHttpApplication
{
    protected override void OnApplicationStarted() {
        RegisterRoutes(RouteTable.Routes);
        RegisterAllControllersIn(Assembly.GetExecutingAssembly());
    }

    protected override IKernel CreateKernel() {
        var modules = new INinjectModule[] {
            new MyProject.Services.ServiceModule(),
            new MyProject.Data.DataModule()
        };

        var kernel = new StandardKernel(modules);

        return kernel;
    }

关于c# - 将 Ninject 与 ASP.NET MVC 和服务层结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3257534/

相关文章:

C# RSA 使用给定的 PKCS#1 公钥加密文本

c# - 为什么 x = x + 100 与编译为相同 IL 的 x += 100 的处理方式不同?

c# - 如何在 ASP.NET MVC 中使用 Web 网格通过单击表标题来对表的顺序进行排序?

asp.net-mvc - 有没有办法将可选参数发送到 Action ?

Ninject 和母版页注入(inject)

c# - 在区间 [1000,9999] 中查找素数的更好解决方案,其中第一个和第二个之和

c# - Nhibernate 多列延迟加载

c# - System.Runtime.Caching.MemoryCache 与 HttpRuntime.Cache - 有什么区别吗?

c# - Json.NET如何在反序列化过程中进行依赖注入(inject)?

c# - 绑定(bind) Ninject Kernel ToConstant 并使用 InTransientScope 有什么意义?