EntLib 4.1 第2.5章 DAAB+Unity (数据访问程序块)
下面说一下DAAB和Unity联合使用的方面
解说还是围绕着QuickStart展开的
在第二章的基础上添加引用
Microsoft.Practices.Unity
Microsoft.Practices.Unity.Configuration
System.configuration
然后在配置文件中添加以下节
并且在configSections中注册该节点:
在DAO中标记依赖注入
[InjectionConstructor]标签用来标记注入哪个构造函数。
只有一个构造函数的话,该标签可以省略。
有两个构造函数的时候,会采用有参数的构造函数。
有该标签的时候,采用被标记的构造函数。
[Dependency]用来标记依赖。
下面是Main的代码
Unity会自动配置相关的依赖关系
解说还是围绕着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>
<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中标记依赖注入
1
public class SalesData
2
{
3
private Database db;
4
5
[InjectionConstructor]
6
public SalesData([Dependency]Database db)
7
{
8
this.db = db;
9
}
10
11
//以下代码省略
public class SalesData2
{3
private Database db;4

5
[InjectionConstructor]6
public SalesData([Dependency]Database db)7
{8
this.db = db;9
}10

11
//以下代码省略[InjectionConstructor]标签用来标记注入哪个构造函数。
只有一个构造函数的话,该标签可以省略。
有两个构造函数的时候,会采用有参数的构造函数。
有该标签的时候,采用被标记的构造函数。
[Dependency]用来标记依赖。
下面是Main的代码
1
private 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
}
private static void Main()2
{3
IUnityContainer container = new UnityContainer();4

5
//从配置文件中读取unity节点6
UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");7
//用该节点的信息配置container8
section.Containers["dataContainer"].Configure(container);9

10
//用容器配置创建QuickStartForm11
AppForm = container.Resolve<QuickStartForm>();12

13
Application.Run(AppForm);14
}Unity会自动配置相关的依赖关系



浙公网安备 33010602011771号