Интерфейс ICancelAddNew: поддержка транзакционных вставок в коллекцию

этот интерфейс был введен в

Интерфейс ICancelAddNew Позволяет добавлять в коллекцию и редакти ровать новые элементы в промежуточном состоянии, допускающем удаление нового элемента до окончательного утверждения изменений. Этот интерфейс был введен в .NET 2.0, чтобы разорвать неявную взаимозависимость, возникающую в интерфейсе LEditableObject. До определения ICancelAddNew Объекты коллекции, реализующей интерфейс LEditableObject, Должны были уведомлять свою родительскую коллекцию об отмене редактирования вновь добавляемого элемента, чтобы коллекция могла удалить этот элемент. При использовании ICancelAddNew Коллекция может сама позаботиться об удалении, и объект не должен теперь иметь прямую связь с содержащей его коллекцией, чтобы отменить добавление нового элемента при отмене его инициализации. Другой возможностью, которая напрашивается для расширения возможностей привязки данных, является поддержка транзакционных вставок элементов в коллекцию. Чтобы в этом разобраться, рассмотрим таблицу данных, привязанную к сетке. Сетка отображает внизу пустую строку, позволяющую добавлять к таблице новые строки. Но что, если имеются ограничения на столбцы этой строки, или требуется совместная верификация значений, введенных в нескольких полях, прежде чем можно будет добавить элемент к коллекции данных? Как можно предотвратить добавление в коллекцию несогласованных данных? В конце концов, где-то ведь должен быть экземпляр объекта, который принимает вводимые пользователем данные по мере того, как тот переходит от одного поля к другому. Наиболее логичным представляется создание такого объекта в качестве новой строки в источнике данных. Но вы не хотите фактически добавлять этот объект, пока его добавление не будет признано «законченным», что бы это ни означало в контексте конкретной коллекции и объектов внутри нее.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *