2013-03-09 6 views
4

Обычно, когда я кодирую свойство классов, которое может быть отредактировано пользователем с привязкой какого-либо рода ... Чтобы предотвратить выполнение GUI-логики, я не могу присвоить такое же значение имущество:Предотвращение переназначения свойств

public PMSAccountingYear AccountingYear{ 
    get { return _accountingYear; } 
    set{ 
     if(_accountingYear == value) 
      return; 
     _accountingYear = value; 
     NotifyOtherProperties(); 

     LogChanges(); 
     EmallToTheBoss(); 

     Errr(); 
     BlowBombInTheGarden(); 
     Etc(); 
    } 
} 

Проверка состояния не выглядит элегантно и не может быть обнаружена при любом автоматическом анализе кода. Можете ли вы предложить лучший вариант? Возможно, с одним из атрибутов?

+5

Я думаю, что у вас есть здесь просто отлично. Я использовал эту точную модель много раз. –

+0

Спасибо. Просто никто не спрашивал, как это выглядело. :-) – Vitality

ответ

3

Что вы делаете, это прекрасно; это общий способ реализации сеттеров для таких вещей, как INotifyPropertyChanged (также пример на этой странице).

Поскольку значение не изменилось, нет необходимости действительно обновлять поле поддержки и, особенно, не уведомлять других о «измененном» значении.

Смежные вопросы