什么是nHibernate CollectionProxy

时间:2014-07-25 00:54:53

标签: c# visual-studio nhibernate vs-extensibility

我正在尝试理解nHibernate中公开的CollectionProxy。它只是ICollection的一个扩展,用于返回列表集合,如果是这样,为什么要使用代理模式?

1 个答案:

答案 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可扩展性框架的一个特性...