【发布时间】:2010-12-23 16:50:45
【问题描述】:
我在我的程序中实现了延迟加载。它是通过代理类完成的,例如:
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 在实例化类时是否访问(读取)类中的属性?
还有其他方法吗?
谢谢
【问题讨论】:
-
假设没有代码尝试在构造时设置到 Items 中,基类中的 Items 是自动实现的属性这一事实是否与此行为有关?
-
没关系,只是在我自己的示例项目中尝试过,我的项目没有被实例化。但是,无论您是测试它的值还是在调试器中查看它,它都会获取。
标签: c# lazy-loading