Самый простой случай.
Пусть у меня имеется класс class MyList : List<MyListItem>, который реализует автоматическое сохранение, когда происходят какие-то изменения в списке элементов MyList или в одном из дочерних элементов MyList. В принципе, для контроля за изменениями элементов, навскидку приходит в голову два механизма. Первый - запретить изменять объекты типа MyListItem, а разрешить только создавать их с помощью конструктора (например, пометив поля {get; private set;}). И разрешить классу MyList всего лишь заменять один дочерний элемент на другой. Второй способ - это добавить в класс MyListItem описание event-а OnChanged, который вызывается при изменении любого поля объекта MyListItem. Этот event будет ловиться родительским MyList, и будет происходить сохранение.
Какой из двух способов в каких случаях предпочтительнее?
З.Ы. Понятно, что при втором подходе можно сразу же в OnChanged передавать копию с текущего состояния объекта MyListItem, что полезно при многопоточности. Но должны же быть какие-то плюсы для первого подхода!.
NataNata
Самый простой случай.Пусть у меня имеется класс class MyList : List<MyListItem>, который реализует автоматическое сохранение, когда происходят какие-то изменения в списке элементов MyList или в одном из дочерних элементов MyList. В принципе, для контроля за изменениями элементов, навскидку приходит в голову два механизма. Первый - запретить изменять объекты типа MyListItem, а разрешить только создавать их с помощью конструктора (например, пометив поля {get; private set;}). И разрешить классу MyList всего лишь заменять один дочерний элемент на другой. Второй способ - это добавить в класс MyListItem описание event-а OnChanged, который вызывается при изменении любого поля объекта MyListItem. Этот event будет ловиться родительским MyList, и будет происходить сохранение.
Какой из двух способов в каких случаях предпочтительнее?
З.Ы. Понятно, что при втором подходе можно сразу же в OnChanged передавать копию с текущего состояния объекта MyListItem, что полезно при многопоточности. Но должны же быть какие-то плюсы для первого подхода!.