NHibernate要求将您的实体属性和方法标记为虚拟,以实现其所有魔力.
虽然我不知道NHibernate的内部性,但是为什么属性必须是虚拟的(可以通过代理类读取/写入)是可以理解的,但是...... 为什么我的实体方法也必须是虚拟的呢?
出于同样的原因.如果您的方法不是虚拟的,那么NHibernate将无法初始化代理.
请考虑以下代码:
public class A
{
private int _a;
public virtual int A
{
get { return _a; }
set { _a = value; }
}
public void DoSomethingWithA()
{
Console.WriteLine(_a);
}
}
Run Code Online (Sandbox Code Playgroud)
因此,如果您有一个代理对象,A当您调用a.DoSomethingWithA();它时将访问未初始化的_a字段.
为了避免这种情况,为了能够注入代理初始化代码,NHibernate不需要私有方法是虚拟的.
| 归档时间: |
|
| 查看次数: |
1663 次 |
| 最近记录: |