Покритикуйте простенький код )
От: Аноним  
Дата: 16.06.10 13:06
Оценка:
Мне необходимо, чтобы некоторые объекты реализовывали интерфейсы INotifyPropertyChanged, INotifyPropertyChanging.
Когда у объекта проперти простая (String, Int) — все хорошо:

        public String name
        {
            get { return _name; }
            set
            {
                if (_name != value)
                {
                    OnPropertyChanging("name");
                    _name = value;
                    OnPropertyChanged("name");
                }
            }
        }
        private String _name = "";

Но если у объекта есть проперти типа List<T> — тут, как вы понимаете, так просто не отделаешься, потому что надо отлавливать не set а Add у самого List<T>.
Посмотрев, что у List<T> нету событий, я решил написать свой класс:

 public class NotifyPropertyList<T> : List<T>, INotifyPropertyChanged, INotifyPropertyChanging
    {
        public event PropertyChangedEventHandler PropertyChanged;
        public event PropertyChangingEventHandler PropertyChanging;

        protected void OnPropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            PropertyChangedEventHandler temp = PropertyChanged;
            if (temp != null)
                temp(temp, e);
        }

        protected void OnPropertyChanging(object sender, PropertyChangingEventArgs e)
        {
            PropertyChangingEventHandler temp = PropertyChanging;
            if (temp != null)
                temp(temp, e);
        }

        public new void Add(T item)
        {
            OnPropertyChanging(this, null);
            this.Add(item);
            OnPropertyChanged(this, null);
        }

    }

И подумал: а хорошо бы еще знать — не изобретаю ли я велосипед?
Если кто-то конструктивно покритикует или покажет такой же велосипед — буду рад
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.