解说还是围绕着QuickStart展开的
在第二章的基础上添加引用
Microsoft.Practices.Unity
Microsoft.Practices.Unity.Configuration
System.configuration
然后在配置文件中添加以下节
1 <unity>
2 <containers>
3 <container name="dataContainer">
4 <extensions>
5 <add type="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.Unity.EnterpriseLibraryCoreExtension, Microsoft.Practices.EnterpriseLibrary.Common" />
6 <add type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.Unity.DataAccessBlockExtension, Microsoft.Practices.EnterpriseLibrary.Data" />
7 </extensions>
8 </container>
9 </containers>
10 </unity>
2 <containers>
3 <container name="dataContainer">
4 <extensions>
5 <add type="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.Unity.EnterpriseLibraryCoreExtension, Microsoft.Practices.EnterpriseLibrary.Common" />
6 <add type="Microsoft.Practices.EnterpriseLibrary.Data.Configuration.Unity.DataAccessBlockExtension, Microsoft.Practices.EnterpriseLibrary.Data" />
7 </extensions>
8 </container>
9 </containers>
10 </unity>
并且在configSections中注册该节点:
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration" />
在DAO中标记依赖注入
1public class SalesData
2 {
3 private Database db;
4
5 [InjectionConstructor]
6 public SalesData([Dependency]Database db)
7 {
8 this.db = db;
9 }
10
11//以下代码省略
2 {
3 private Database db;
4
5 [InjectionConstructor]
6 public SalesData([Dependency]Database db)
7 {
8 this.db = db;
9 }
10
11//以下代码省略
[InjectionConstructor]标签用来标记注入哪个构造函数。
只有一个构造函数的话,该标签可以省略。
有两个构造函数的时候,会采用有参数的构造函数。
有该标签的时候,采用被标记的构造函数。
[Dependency]用来标记依赖。
下面是Main的代码
1private static void Main()
2{
3 IUnityContainer container = new UnityContainer();
4
5 //从配置文件中读取unity节点
6 UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");
7 //用该节点的信息配置container
8 section.Containers["dataContainer"].Configure(container);
9
10 //用容器配置创建QuickStartForm
11 AppForm = container.Resolve<QuickStartForm>();
12
13 Application.Run(AppForm);
14}
2{
3 IUnityContainer container = new UnityContainer();
4
5 //从配置文件中读取unity节点
6 UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");
7 //用该节点的信息配置container
8 section.Containers["dataContainer"].Configure(container);
9
10 //用容器配置创建QuickStartForm
11 AppForm = container.Resolve<QuickStartForm>();
12
13 Application.Run(AppForm);
14}
Unity会自动配置相关的依赖关系