То, что вы описываете, это «ленивая загрузка».
Простой подход заключается в том, чтобы иметь частное свойство, подобное этому:
private Lixt<Customer> _customers;
private List<Customer> Customers
{
get
{
if(_customers == null)
_customers = LoadData();
return _customers;
}
}
Затем вы ссылаетесь на Customers
внутри.Клиенты будут загружены в первый раз, когда они будут необходимы, но не раньше.
Это настолько распространенный шаблон, что .Net 4.0 добавил класс Lazy<T>
, который делает это за вас.
Iв этом случае вы просто определяете его как личное:
private Lazy<List<Customer>> _customers = new Lazy<List<Customer>>(LoadData);
Затем вы просто ссылаетесь на своих клиентов в коде:
_customers.Value
Класс инициализирует значение с помощью вашегоLoadData()
метод.
Если вы еще не используете .Net 4.0, класс Lazy<T>
очень легко реализовать.