【IT168技术文档】
使用Castle实现IOC和DI开发
Castle是一个著名的原生.NET开源项目,Castle的目标是实现一个全方位的整合框架,在 Castle框架下实现多个子框架的组合,这些子框架之间彼此可以独立,也可以使用其他的框架方案加以替代,Castle希望提供 one-stop shop 的框架整合方案。目前Castle最新版本说RC3,可以通过这里(http://www.castleproject.org/)来下载。它包含了:
·MicroKernel/Windsor 实现的IOC容器
·ActiveRecord实现持久层O/R M解决方案
· MonoRail实现Web框架
·Aspect#实现AOP框架
·一些辅助功能和服务
我们接着上一节的电影列表的例子来介绍一下Castle如何进行依赖注入的开发。
首先我们创建如下一个XML文件来保存电影列表:
对应这个XML文件,创建一个XmlFileMovieFinder的类:<?xml version="1.0" encoding="utf-8" ?> <Movies> <Movie Name="A-1" Director="Zyg"/> <Movie Name="A-2" Director="Zyg"/> <Movie Name="B-1" Director="Kevin"/> <Movie Name="B-2" Director="Kevin"/> <Movie Name="B-3" Director="Kevin"/> </Movies>
class XmlFileMovieFinder : IMovieFinder { #region IMovieFinder Members public IList<Movie> FindAll() { XmlDocument doc = new XmlDocument(); doc.Load("Movies.xml"); List<Movie> lst = new List<Movie>(); Movie m; foreach (XmlNode node in doc.GetElementsByTagName("Movie")) { m = new Movie(); m.Name = node.Attributes["Name"].Value; m.Director = node.Attributes["Director"].Value; lst.Add(m); } return lst; } #endregion }