我在我的程序中实现了延迟加载。它是通过代理类完成的,如:
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在类中进行实例化时,它是否在类中访问(读取)属性?
还有其他方法吗?
由于
答案 0 :(得分:4)
有什么问题?是否有.NET CLR 访问(读取)类中的属性, 当它正在安排课程时?
没有
要查看访问该属性的代码,只需在其中放置一个断点并查看堆栈跟踪窗口(Debug菜单 - Windows - Call Stack)。
答案 1 :(得分:4)
有时它是调试器预览触发加载