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接口:
ConsoleLogger类:
NullLogger类:
Step1. 创建容器
在Unity中创建容器实例最简单的方法是直接使用构造函数创建,如下代码所示:
IUnityContainer container = new UnityContainer();
Step2. 注册接口映射
在Unity中提供了一组Register方法供我们在容器中注册接口映射,如下代码所示:
container.RegisterType<ILogger, ConsoleLogger>();
Step3. 获取对象实例
在Unity中提供了一组Resolve方法用以获取对象实例,如下代码所示:
ILogger logger = container.Resolve<ILogger>();
OK,就这么简单!
测试:
场景一:注册一个ConsoleLogger作为ILogger的实现到容器中,然后从容器中解析ILogger的实现,并调用ILogger的Log方法。
结果:
场景二:注册一个NullLogger作为ILogger的实现到容器中,然后从容器中解析ILogger的实现,并调用ILogger的Log方法。
结果: