Требуется ли отсоединение и повторное присоединение событий при установке BindingList - PullRequest
1 голос
/ 17 февраля 2011

У меня есть следующий код:

    private BindingList<Box> _boxesToDisplay;
    public BindingList<Box> BoxesToDisplay
    {
        get
        {
            return _boxesToDisplay;
        }
        set 
        {
            // Unhook the old one.  Just incase
            _boxesToDisplay.AddingNew -= NewItemAdded;
            // Set the new value
            _boxesToDisplay = value;
            // Hook in the value again.
            _boxesToDisplay.AddingNew += NewItemAdded;
        }
    }

Но я задумался.Было бы лучше, если бы это было перегрузкой для оператора доставки.Тогда мне стало интересно, действительно ли они это сделали, и я мог бы просто заменить свой код следующим:

     public BindingList<Box> BoxesToDisplay { get; set; }

Это правда?Будет ли это:

     myClass.BoxesToDisplay = new BindingList<Box>();

по-прежнему имеет событие AddingNew, установленное на NewItemAdded() с любым определением BoxesToDisplay?

1 Ответ

2 голосов
/ 17 февраля 2011

Будет ли в этом [...] событии AddingNew задано значение NewItemAdded () с любым из определений BoxesToDisplay?

Нет, вы полностью заменяете ссылку _boxesToDisplay.Не существует механизма пересадки обработчиков событий.

Все, что я могу сказать, это то, что со свойством Auto-Imp вам не понадобится -= столько, сколько нет шансов, что что-то еще будет иметь доступ к старому экземпляру.Но вам все равно придется привязываться к новому.

...