Я снова в состоянии найти выход для обработки списков с дополнительными объектами в наших бизнес-объектах.
На самом деле наш код часто выглядит так:
public class Object
{
private List<SubsidiaryObject> subsidiaryObjects = null;
public List<SubsidiaryObject> SubsidiaryObjects
{
get
{
if (this.subsidiaryObjects == null)
{
this.subsidiaryObjects = DBClass.LoadListFromDatabase();
}
return this.subsidiaryObjects;
}
set
{
this.subsidiaryObjects = value;
}
}
}
Против этого:
- На свойство ссылаются на уровне представления и используют для привязки данных. Освобождение ссылки на фактический список и замена его новым приведет к тому, что в графическом интерфейсе появится ссылочный список, в котором ничего не осталось со списком объекта.
Профи на этом:
- Простой способ перезагрузки списка (просто установите ссылку на ноль и затем получите ее снова).
Я разработал другой класс, который использует следующий шаблон:
public class Object2
{
private readonly List<SubsidiaryObject> subsidiaryObjects = new List<SubsidiaryObject>();
public List<SubsidiaryObject> SubsidiaryObjects
{
get
{
return this.subsidiaryObjects;
}
}
public void ReloadSubsidiaryObjects()
{
this.SubsidiaryObjects.Clear();
this.SubsidiaryObjects.AddRange(DBClass.LoadListFromDatabase());
}
}
Pro на этом:
Против этого:
- Перезагрузить список сложнее, поскольку его просто невозможно заменить, но его необходимо очистить / заполнить перезагруженными элементами.
Какой путь вы предпочитаете, для каких ситуаций?
Что вы видите как Pro / Con для любого из этих паттернов?
Поскольку это только общий вопрос, а не конкретная проблема, каждый ответ приветствуется.