我正在尝试理解nHibernate中公开的CollectionProxy。它只是ICollection的一个扩展,用于返回列表集合,如果是这样,为什么要使用代理模式?
答案 0 :(得分:2)
您正在观察的是Visual Studie可扩展性生态系统。首先,正如我们所看到的,这个类位于名称空间中:
namespace NHibernate.DebugHelpers
这意味着,它仅用于调试目的。
首先,我们可以看到public object[] Items
上有一些属性声明,如下所示:
[DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
public object[] Items
{
..
这是将Visual Studio调试器引入:
在观察集合时隐藏Root(如枚举名称所示)。实际上,它将在调试窗口中保存一行。我们只会看到该系列的项目......
只需将此助手用作另一个属性声明,例如如同PersistentGenericBag:
[DebuggerTypeProxy(typeof (CollectionProxy<>))]
public class PersistentGenericBag<T> : PersistentBag, IList<T>
......那就是......没什么特别的......只是Visual Studio可扩展性框架的一个特性...