IoC服务应该从DB中检索信息
我应该在这种情况下使用Pattern" lazy load"封装访问服务方法的属性?例如:
public interface IMyDbConstantService {
string MyDbConstant {get;}
string GetMyDbConstant();
}
public class MyDbConstantService: IMyDbConstantService {
public string MyDbConstant
{
get
{
// Implementing lazy load pattern
return myDbConstant ?? (myDbConstant = this.GetMyDbConstant());
}
}
public string GetMyDbConstant() {
// time expensive operation
}
}
答案 0 :(得分:0)
我认为myDbConstant是一个字段?你不能在任何地方宣布它。我会把它变成一个私有的静态字段 - 你可能还需要为它添加更新锁。
我还会在接口和实现中删除getter,只是将延迟初始化直接放在GetMyDBConstant方法中。
至于这是否是一个好主意:你还没有提供足够的信息来说明这种或那种方式。在首次使用时加载是否更有意义,或者可以在应用程序启动时加载它,可能在后台线程中加载?