【发布时间】:2011-06-15 19:43:11
【问题描述】:
我在处理虚拟代理时遇到了一些麻烦。我已经阅读了大量文章并花了几个小时试图找到好的信息,但我还没有找到全面的东西。因此,我将在此处提出一般性请求以获取更好的信息(在此处发布或仅提供链接)。我还将在下面添加一些细节,以更好地解释我到底想要什么。
我有几个对象,它们之间有很多引用。为简洁起见,我将有一个具有基本父子关系的对象(节点)。当我从数据库中拉出这个对象时,我想实现延迟加载。根据我的阅读,虚拟代理将通过引用接口(INode)并根据需要拉取数据成员来为我处理所有延迟加载。 [注意:我实际上没有 INode 类,但是当我将 virtual 关键字放在我的数据成员上时,似乎确实使用了代理]
当我将我的类中的数据成员设为虚拟时,它似乎是一个代理。这是虚拟代理吗?这些是否实现了延迟加载?
我搜索了有关 virtual 关键字的信息,但我能找到的唯一文档是在方法上使用它,它用于继承,以便派生类可以覆盖该函数,这与我想要的无关(我认为)。
这是我当前的 Node.cs
[DataContract(IsReference=true)]
public partial class Node
{
[DataMember]
public long ID { get; private set; }
[DataMember]
public virtual Node Parent { get; set; }
[DataMember]
public virtual ICollection<Node> Children { get; set; }
}
基本上在这一点上我很困惑,只需要一些关于这个主题的指导,甚至是我可以查看的在线资源,因为我发现的所有资源都没有帮助。
提前致谢。
【问题讨论】: