C# 什么是nHibernate CollectionProxy

C# 什么是nHibernate CollectionProxy,c#,visual-studio,nhibernate,vs-extensibility,C#,Visual Studio,Nhibernate,Vs Extensibility,我在努力理解nHibernate中暴露出来的问题。返回列表集合是否只是ICollection的一个扩展,如果是,为什么要使用代理模式?您看到的是Visual Studie可扩展性生态系统。首先,我们可以看到,此类位于名称空间中: namespace NHibernate.DebugHelpers 这意味着,它仅用于调试目的 它是如何工作的? 首先,我们可以看到在公共对象[]项上有一些属性声明,如下所示: [DebuggerBrowsable(DebuggerBrowsableState.Roo

我在努力理解nHibernate中暴露出来的问题。返回列表集合是否只是ICollection的一个扩展,如果是,为什么要使用代理模式?

您看到的是Visual Studie可扩展性生态系统。首先,我们可以看到,此类位于名称空间中:

namespace NHibernate.DebugHelpers
这意味着,它仅用于调试目的

它是如何工作的? 首先,我们可以看到在
公共对象[]项上有一些属性声明,如下所示:

[DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
public object[] Items
{
  ..
这是对Visual Studio调试器的指令,用于:

观察集合时隐藏根(如枚举名称所示)。实际上,它将在调试窗口中保存一行。我们将只看到该系列的商品

怎么把它挂上? 只需将此帮助器用作另一个属性声明,例如,在以下位置:

[DebuggerTypeProxy(typeof(CollectionProxy))]
公共类PersistentGenericBag:PersistentBag,IList

……就是这样。。。没什么特别的。。。只是Visual Studio扩展性框架的一个功能…

现在我看到XAML中使用了类似的模式,其中为Blend等设计应用程序提供了代理对象。在运行时期间,不使用代理。
[DebuggerTypeProxy(typeof (CollectionProxy<>))]
public class PersistentGenericBag<T> : PersistentBag, IList<T>