Вместо того, чтобы делать такие процедуры инициализации, вы бы предпочли использовать ленивые свойства загрузки для таких вещей.
private Lazy<IEnumerable<CObject>> cObjects = new Lazy<IEnumerable<CObject>>(LoadCObjects);
public IEnumerable<CObject> CObjects
{
get { return this.cObjects.Value; }
}
CObjects
будет загружен при первом обращении к свойству.
РЕДАКТИРОВАТЬ: Когда вы не в .NET 4.0, Lazy<T>
это просто модный способ для чего-то подобного:
private IEnumerable<CObject> cObjects;
public IEnumerable<CObject> CObjects
{
get
{
if (this.cObjects == null)
lock (this.someLockObject)
if (this.cObjects == null)
this.cObjects = this.LoadCObjects();
return this.cObjects;
}
}