Microsoft patterns & practices 终于发布了Unity,可以从这里下载,同时可以参见Unity的老大Grigori Melnik发布说明,不过比下载页面也没多什么信息。

最近patterns & practices团队采用了一种新的文档发布模式,就是Release版本的产品在发布的同时,将产品文档同步到msdn中。这样的话,如果你只想先了解下产品,或者先了解再决定是否安装的话,可以先在msdn上浏览,而不必安装->看文档->卸载。 

在这里,首先给出一个简单使用Unity的简单示例。通过示例,让我们对Unity的使用有一个初步的认识和了解。在接下来的文章中,我会展开做详细的介绍和分析。如果对Unity是还一点概念也没有的话,可以参考我前面的两篇文章:Unity(一):从ObjectBuilder说起Unity(二):Unity是什么?

本示例主要展示了Unity在type mapping方面的一个基本应用。

 

使用Unity,最基本步骤有三步。

1. 建立容器;

2. 将接口与类的映射注册到容器中;

3. 从容器中解析出正确的对象。

 

为了接下来的说明,我们先编写几个后面需要的接口和类:

Step0. 准备工作

ILogger接口:

image    

ConsoleLogger类:

image   

NullLogger类:

image

 

Step1. 创建容器

在Unity中创建容器实例最简单的方法是直接使用构造函数创建,如下代码所示:

IUnityContainer container = new UnityContainer();

Step2. 注册接口映射

在Unity中提供了一组Register方法供我们在容器中注册接口映射,如下代码所示:

container.RegisterType<ILogger, ConsoleLogger>();

Step3. 获取对象实例

在Unity中提供了一组Resolve方法用以获取对象实例,如下代码所示:

ILogger logger = container.Resolve<ILogger>();

OK,就这么简单!

 

测试:

image

场景一:注册一个ConsoleLogger作为ILogger的实现到容器中,然后从容器中解析ILogger的实现,并调用ILogger的Log方法。

image

结果:

image

 

场景二:注册一个NullLogger作为ILogger的实现到容器中,然后从容器中解析ILogger的实现,并调用ILogger的Log方法。

image

结果:

image

posted on 2008-04-08 14:25  赤脚小子  阅读(10597)  评论(14编辑  收藏  举报