2015-01-13 2 views
0

Я строю систему, в которой есть основная информация, которая должна быть обновлена, когда пользователь вставляет или удаляет что-либо. Когда есть конкретные формы для выполнения этих задач, информация о основной форме обновляется, когда операция CRUD успешно завершается в форме диалога. Проблема заключается в том, что когда я должен добавить другую форму, которая вносит некоторые изменения в данные, я должен создать событие, которое имеет такое же намерение в форме диалога и назначить его методу, который заполняет данные, нарушая открытый принцип закрытия. Вот пример:Принцип Open Close с событиями

Создание события на форме диалога продукта Update:

public static event Action OnUpdateProduct 

Создание события на диалоговом продукта форме:

public static event Action OnUpdateProduct 

Присвоить к событию FrmNewProduct.OnUpdateProduct в основной форме:

FrmNewProduct.OnUpdateProduct += FillDataTable; 

Назначить FrmUpdateProduct.OnUpdat eProduct событие в главной форме:

FrmUpdateProduct.OnUpdateProduct += FillDataTable; 

Как мне сделать, чтобы исправить это, чтобы разъединить основную форму?

+0

это домашнее задание? –

ответ

0

Рассмотрите возможность создания глобального одноэлементного класса EventDispatcher с помощью функции OnUpdateProduct и функции спутника TriggerUpdateProduct(). В вашей основной форме вы присоединяетесь к одному событию, и вы можете запустить его из нескольких других форм.

Что вам нужно, это просто расцепление между триггерами событий и его подписками. Мой пример - простой способ сделать это, и вы можете рассмотреть другие подходы, такие как предложение zmechanic