Ninject之旅之四: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的公有类,加载他们的类型绑定。

 





posted on 2016-09-26 20:26 丹尼大叔 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/uncle_danny/p/5910525.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值