延迟加载实现的问题

时间:2010-12-23 16:50:45

标签: c# lazy-loading


我在我的程序中实现了延迟加载。它是通过代理类完成的,如:

class Order
{
   public virtual IList<Item> Items {get; set;}
}

class OrderProxy
{
   public override IList<Item> Items 
   {
      get
      {
          if (base.Items == null)
              Items = GetItems(base.OrderID);
          return base.Items;
      }
      set { base.Items = value; }
   }
}

问题是每当我实例化代理类时,甚至没有触及Items属性,它都会尝试加载Items!
您可能知道,我想实例化代理类并将实例返回给BLL而不是域对象本身。

有什么问题?
当.NET CLR在类中进行实例化时,它是否在类中访问(读取)属性? 还有其他方法吗?

由于

2 个答案:

答案 0 :(得分:4)

  

有什么问题?是否有.NET CLR   访问(读取)类中的属性,   当它正在安排课程时?

没有

要查看访问该属性的代码,只需在其中放置一个断点并查看堆栈跟踪窗口(Debug菜单 - Windows - Call Stack)。

答案 1 :(得分:4)

有时它是调试器预览触发加载