虚拟属性和延迟加载

根据定义,虚拟属性或方法是要被覆盖的子类可见的方法。 但是,例如NHibernate使用虚拟属性来确保延迟加载。

我的问题不是关于NHibernate,而是如何使用虚拟属性来实现延迟加载? 是否有任何关于我不知道的虚拟属性的隐藏行为?

事实上,它们被声明为虚拟允许NHibernate覆盖属性并为其创建代理实现 – 反过来,它们可以用来在第一次访问属性时实现延迟加载。

virtual成员背后没有隐藏的行为。 除了不那么隐藏的事实,它们可以在子类中被覆盖。

使用Lazy类可以实现延迟加载。 其中T是要加载的类型。 它会隐式转换为T

或者如果你想手动设置属性以表现懒惰,你可以使用这样的东西:

 private SomeType _someProperty = null; public override SomeType SomeProperty { get { if (_someProperty == null) { // Load _someProperty } return _someProperty; } } 

使用ValueTypes,您可以选择使它们为Nullable 。 或者介绍一下他们是否装满了bool