我想知道:如果我从 db4o 数据库加载一个对象,是否总是会调用字段初始值设定项?
一个例子可能是一个瞬态字段syncRoot,用于对象锁定,因为线程安全:
public class Test
{
[Transient]
private object syncRoot = new object();
[Transient]
private object syncRoot2;
public Test()
{
this.syncRoot2 = new object();
}
}
db4o 查询类似于:
Test mytestObject = (from Test test in session
select test).First();
我不能使用syncRoot2
,因为在 db4o 查询期间,没有调用对象构造函数,因此该值将为 null。但是呢syncRoot
?在 db4o 模型对象上使用字段初始化器是否安全?