Я думаю, что вы должны сосредоточиться на объекте, а не на происходящем событии.
Скажем, например, у вас есть событие
void combobox_Changed( object sender, EventArgs e )
{
PerformActions()
}
и PerformActions что-то сделали с эффектом
void PerformActions()
{
(listBox.SelectedItem as IPerson).Nationality =
(comboBox.SelectedItem as INationality)
}
тогда внутри Человека вы ожидаете увидеть что-то с эффектом
class Person: IPerson
{
INationality Nationality
{
get { return m_nationality; }
set
{
if (m_nationality <> value)
{
m_nationality = value;
this.IsDirty = true;
}
}
}
}
Дело в том, что вы позволяете объекту отслеживать то, что происходит с самим собой, а не пользовательский интерфейс. Это также позволяет отслеживать отслеживание грязных флагов на ваших объектах, что может пригодиться для сохранения в дальнейшем.
Это также поддерживает ваш интерфейс в чистоте и предотвращает получение нечетного регистрационного кода события, который, скорее всего, будет подвержен ошибкам.