【发布时间】:2010-11-17 11:12:48
【问题描述】:
类似于这个问题: C# Constructor Design 但这个问题略有不同。
我有一个类 Customer 和一个类 CustomerManager。当创建 CustomerManager 类的实例时,我想加载所有客户。这就是我卡住的地方。我可以通过多种方式做到这一点:
- 在构造函数中加载所有客户(我不喜欢这个,因为如果我有很多客户可能需要一段时间)
-
在执行数据库相关操作的 CustomerManager 类的每个方法中,检查本地客户列表是否已加载,如果没有,则加载该列表:
public method FindCustomer(int id) { if(_customers == null) // some code which will load the customers list } -
创建一个加载所有客户的方法。此方法必须在调用执行数据库相关操作的方法之前调用:
在课堂上:
public LoadData() { // some code which will load the customers list }形式:
CustomerManager manager = new CustomerManager(); manager.LoadData(); Customer customer = manager.FindCustomer(int id);
最好的方法是什么?
编辑:
我觉得我在这里被误解了。也许是因为我不够清楚。在 CustomerManager 类中,我有几个方法取决于本地列表 (_customers)。那么,我的问题是,我应该在哪里填写该列表?
【问题讨论】:
-
当您说“表单”时,我相信您是指 WebForm 还是 WinForm,这很重要;我会以不同的方式实现每一个,因为还涉及缓存。那么,您指的是哪一个?
-
我认为您需要详细说明(在您的编辑之后)。不清楚为什么延迟加载在
CustomerManager类中不起作用,只要将_customers更改为惰性Customers或Lazy<T>并在内部引用_customers.Value。 -
对不起,我没想到,我的错!