DependencyResolutionLocatorKey 用来唯一标识在 ObjectBuilder 中存储的对象。ObjectBuilder 中会使用一种叫做“定位器”的对象(内部通过一个哈希表来存储对象)来存储需要被缓存的对象。当我们要创建的是一个可以被重复使用的对象(例如:设计模式中的“单件模式”),则应该第一次使用 ObjectBuilder 创建该对象后将其缓存,当下次再使用 ObjectBuidler 创建该对象时将直接返回上次创建的那个对象。
这个 DependencyResolutionLocatorKey 实际上就是一个用于标识对象关键字,ObjectBuilder 使用“类型/名称”对来标识一个对象,这样有利于“插件式”的开发。开发人员可以为某类插件定义一个所有该类型的“插件”都必
1
using System;
2![](/Images/OutliningIndicators/None.gif)
3
namespace Microsoft.Practices.ObjectBuilder
4
{
5
/// <summary>
6
/// 表示一个 "类型/
7
/// 标识" 对,该类用
8
/// 于标识 "定位器"
9
/// 中的对象。
10
/// </summary>
11
/// <remarks>
12
/// 该类实际上是用来
13
/// 标识一个 "依赖对
14
/// 象" 的,而 "依赖
15
/// 对象" 一般是保存
16
/// 在 "定位器" 中的。
17
/// </remarks>
18
public sealed class DependencyResolutionLocatorKey
19
{
20![](/Images/OutliningIndicators/InBlock.gif)
21
字段
25![](/Images/OutliningIndicators/InBlock.gif)
26
属性
49![](/Images/OutliningIndicators/InBlock.gif)
50
构造函数
72![](/Images/OutliningIndicators/InBlock.gif)
73
公有方法
104![](/Images/OutliningIndicators/InBlock.gif)
105
}
106
}
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
5
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
6
![](/Images/OutliningIndicators/InBlock.gif)
7
![](/Images/OutliningIndicators/InBlock.gif)
8
![](/Images/OutliningIndicators/InBlock.gif)
9
![](/Images/OutliningIndicators/InBlock.gif)
10
![](/Images/OutliningIndicators/InBlock.gif)
11
![](/Images/OutliningIndicators/InBlock.gif)
12
![](/Images/OutliningIndicators/InBlock.gif)
13
![](/Images/OutliningIndicators/InBlock.gif)
14
![](/Images/OutliningIndicators/InBlock.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/InBlock.gif)
17
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
18
![](/Images/OutliningIndicators/InBlock.gif)
19
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
20
![](/Images/OutliningIndicators/InBlock.gif)
21
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
25
![](/Images/OutliningIndicators/InBlock.gif)
26
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
49
![](/Images/OutliningIndicators/InBlock.gif)
50
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
72
![](/Images/OutliningIndicators/InBlock.gif)
73
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
104
![](/Images/OutliningIndicators/InBlock.gif)
105
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
106
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
须继承的基类(或接口),然后为每个“插件实现”指定一个名称。当我们需要创建该“插件”的对象时,只需要使用这个基类型(或接口类型)和为该“插件实现”指定的名称,就可以马上确定要创建的是哪个插件了。