天天看点

【转】轻量级IOC框架:Ninject

建议新手请先看看Ninject的介绍:

<a href="http://ninject.codeplex.com/wikipage?title=What%20Is%20Ninject%3F&amp;referringTitle=User%20Guide">What Is Ninject</a>

<a href="http://ninject.codeplex.com/wikipage?title=Why%20Use%20Ninject%3F&amp;referringTitle=User%20Guide">Why Use Ninject</a>

我节选其中关于Ninject的好处,并翻译如下:

Ninject是一个快如闪电、超轻量级的基于.Net平台的依赖注入框架。它能够帮助你把应用程序分离成一个个松耦合、高内聚的模块,然后用一种灵活的方式组装起来。通过使用Ninject配套你的软件架构,那么代码将会变得更加容易编写、重用性强、易于测试和修改。

搜索博客园尚未找到关于Ninject的使用,因此本文发布一个示例作入门级教程。

像以前的IOC教程那样,拿日志记录做示例应该是非常直观的。

首先编写一个日志记录的接口:

以及FlatFileLogger, DatabaseLogger 来实现Logger的逻辑(只是为了演示Ninject的使用,所以具体逻辑是省略的,只是通过控制台告诉大家使用了那个Logger):

Ninject通过NinjectModule来配置依赖注入(不知道有没有文件配置,在官方教程里没找到相关资料),这里自定义自己的Module:

具体调用方法:

通过 kernel.Get&lt;ILogger&gt;() 来获取ILogger的实例,之前在MyModule里先后对ILogger 绑定了FlatFileLogger 和 DatabaseLogger,而kernel.Get&lt;ILogger&gt;() 这里返回第一个绑定的对象,即FlatFileLogger。

这里新建一个ITester 和 IocTester, 而IocTester 依赖于ILogger:

下面看看Ninject是怎么配置的,很简单修改MyModule,绑定ITester:Bind&lt;ITester&gt;().To&lt;IocTester&gt;():

从以上配置中,我们是看不到IocTester 和ILogger 是有依赖关系的,这就是依赖注入的好处。只是简单告诉哪个接口对应哪个类,剩下的任务就可以交给Ninject来处理了。

另外Ninject 也支持属性、方法等注入,具体可以参考用户向导。

IOC的世界有句话是这样说的:Don't call me, I will call you.

介绍Ninject 在ASP.NET MVC 的应用(英文)

<a href="http://codeclimber.net.nz/archive/2009/08/14/how-to-use-ninject-2-with-asp.net-mvc.aspx" target="_blank">How to use Ninject 2 with ASP.NET MVC</a>

另一篇关于微软的IOC框架Unity的介绍:

<a href="http://www.cnblogs.com/coolcode/archive/2009/05/25/1488792.html">IOC : Unity 配置和使用</a>

本文转自齐师傅博客园博客,原文链接:http://www.cnblogs.com/youring2/archive/2012/05/28/2520992.html,如需转载请自行联系原作者