zoukankan      html  css  js  c++  java
  • Ninject之旅之四:Ninject模块

    摘要

     随着应用程序的增长,注册的服务列表跟着变长,管理这个列表将变得困难。Ninject模块是一个好的将我们的类型绑定分离到不同的绑定组的方式,它很容易地将分组组织到不同的文件中。将一个类变成一个Ninject模块只需要将这个类继承INinjectModule接口。每次创建一个Module的时候都需要实现这个接口,需要实现三个方法和两个属性。创建一个抽象类实现这个接口,之后每次创建Ninject模块的时候都继承这个抽象类,这是一个好主意。好消息是Ninject已经有一个这样的抽象类,名称是NinjectModule。

    下面是一个NinjectModule例子:

    1     public class MailServiceModule : NinjectModule
    2     {
    3         public override void Load()
    4         {
    5             Bind<ILogger>().To<ConsoleLogger>().InSingletonScope();
    6             Bind<MailServerConfig>().ToSelf().InRequestScope();
    7         }
    8     }

    定义了模块之后,我们需要将他们加载到kernel,Ninject才能够正确使用他们得到正确的注册类型。在测试类中添加测试函数:

            [Test]
            public void NinjectModuleTest()
            {
                using (var kernel = new StandardKernel(new MailServiceModule()))
                {
                    var mailService = kernel.Get<MailService>();
                    mailService.SendMail("your email address", "test email", "it is a test Email");
                }
            }

    下面的代码将许多的模块加载到单个Ninject Kernel中:

    var kernel = new StandardKernel(newModule1(), newModule2(), … );

    我们也可以将一个应用程序中所有的模块同时加载到Ninject Kernel中:

    kernel.Load(AppDomain.CurrentDomain.GetAssemblies());

    这里,Ninject在所有的assembly中查找继承INinjectModule的公有类,加载他们的类型绑定。





  • 相关阅读:
    bootstrap 模态框日期控件datepicker被遮住问题的解决
    (转)Jetty实战之 安装 运行 部署
    (转)Redis研究(一)—简介
    在jboss上部署web应用
    webSphere
    Weblogic部署项目三种方式
    js构造函数详解
    范仁义js课程---51、作用域实例
    javascript疑难问题---7、使用var和不使用var声明变量的区别
    范仁义js课程---50、函数作用域
  • 原文地址:https://www.cnblogs.com/uncle_danny/p/5910525.html
Copyright © 2011-2022 走看看