Используется ли INotifyPropertyChanging / Changed кроме. Для привязки данных в .NET Framework? - PullRequest
1 голос
/ 15 июня 2009

Если у вас есть BindingList , например, и вы связываете его с элементом управления, если ваш класс Person не реализует INotfiyPropertyChanging / Changed, ваши изменения в базовом списке не будут отображаться в вашем элементе управления автоматически. Мой вопрос заключается в том, существуют ли какие-либо другие варианты использования этих интерфейсов в отношении инфраструктуры? Я не говорю об использовании этих интерфейсов для реализации ваших собственных действий, основанных на этих событиях, я говорю о самом .NET Framework, есть ли еще какая-то необходимость в реализации этих интерфейсов?

1 Ответ

3 голосов
/ 15 июня 2009

Я не могу говорить со 100% уверенностью, но поскольку у вас не было никаких других ответов, и я сам был заинтересован, я просто запустил Reflector и проверил, какие классы зависят от INotifyPropertyChanged, и появляется короткий ответ быть: нет, это на самом деле не используется ни для чего другого.

Просматривая классы, некоторые ссылки без привязки к данным:

  • System.Configuration.ApplicationSettingsBase - поэтому, если вы решите внедрить свой собственный провайдер для настроек приложения, он должен предоставить функциональность INPC. Так что есть одна область, где он используется вне DataBinding, но очень узкая ниша.

  • System.Printing.PrintTicket также реализует INPC. Я не очень много печатал через .NET, поэтому это может быть важно, а может и нет. Я действительно не мог сказать.

Итак, чтобы ответить на вопрос более полно: если вы не привязываете данные, я сомневаюсь, что вы найдете какую-либо выгоду в том, чтобы ваши классы реализовали INotifyPropertyChanged, есть несколько крайних случаев, когда интерфейс используется вне контекста DataBinding, но если вы работали в этих областях, вы быстро это выясните сами.

...