Modifica delle proprietà e INotifyPropertyChanged

Spesso in rete trovo degli esempi di implementazione dell'interfaccia INotifyPropertyChanged che non mi piacciono per niente (anche su MSDN). In particolare sono interessato a come e quando generare l'evento di notifica della modifica di una proprietà. Sembra che quasi tutti ignorino il fatto di generare la notifica solo quando il valore della proprietà è stato effettivamente modificato.

Credo invece sia importante gestire correttamente tale notifica, per una serie di ragioni, prima su tutte le performance. Nelle mie implementazioni di entità gestisco l'impostazione del nuovo valore e la notifica in modo centralizzato, con un metodo protected implementato nella classe base da cui derivano tutte le entità, con il compito di verificare effettivamente se il valore è  cambiato oppure no prima di impostare il nuovo valore e generare l'evento. E' chiaro che tutte le entità concrete devono rispettare il pattern di richiamare tale metodo nei rispettivi setter ed implementare l'override del metodo Equal (e quindi obbligatoriamente anche GetHashCode) in modo da comparare anche proprietà che rappresentano altre entità.

Sto sbagliando, nel senso, mi sto facendo troppi problemi?

Print | posted on venerdì 14 marzo 2008 10:54

Comments on this post

# re: Modifica delle proprietà e INotifyPropertyChanged

Requesting Gravatar...
Io genero la notifica solo quando il valore della proprietà e stato effettivamente modificato. ES:

public string CustomerName
{
get { return _customerName; }
set
{
if (value != this._customerName)
{
this._customerName = value;
RaiseNotifyPropertyChanged("CustomerName");
}
}
}
Left by Matteo Baglini on mar 14, 2008 10:42

# re: Modifica delle proprietà e INotifyPropertyChanged

Requesting Gravatar...
@Matteo Bagini.
L'esempio che hai postato rispecchia l'idea di base delle cose da fare (cambia se implementi ISupportInitialize).
Guarda però che il confronto che fai con l'operatore != per gli oggetti non valore il confronto è riferito solo ai loro riferimenti e quindi quasi sempre risulta una condizione vera.
L'implementazione corretta è un po' più complessa override sulla classe di: Equals e quindi anche di GetHashCode; operatore == e quindi anche di != che richiamano al loro interno Equals.
Il confronto di equaglianza diventa:

if (!object.Equals(value, this._customerName))
{
this._CustomerName = value;
RaiseNotifyPropertyChanged("CustomerName");
}
Left by Riccardo Mariotti on mar 14, 2008 11:50

# re: Modifica delle proprietà e INotifyPropertyChanged

Left by muhabbet yap on lug 17, 2009 5:09

# re: Modifica delle proprietà e INotifyPropertyChanged

Requesting Gravatar...
thank
Left by islamisayfa on ago 28, 2009 9:57

# re: Modifica delle proprietà e INotifyPropertyChanged

Left by sohbet on set 07, 2009 9:04

# re: Modifica delle proprietà e INotifyPropertyChanged

Left by sohbet on set 10, 2009 2:29

# re: Modifica delle proprietà e INotifyPropertyChanged

Requesting Gravatar...
| Erozyon
Erozyon


| Tavla
Tavla

| Tavla İndir
Tavla İndir

| Play65 Tavla İndir
Play65 İndir

| Play65
Play65

| Play65 Tavla
Play65 Tavla

| Tavla Oyna
Tavla Oyna

| Play65 Tavla Oyna
Play65 Tavla Oyna

| Okey İndir
Okey İndir

| Okey Oyunu İndir

Okey Oyunu İndir

| Okey Oyna
Okey Oyna

| Paralı Tavla
Paralı Tavla

| Paralı Tavla Oyna
Paralı Tavla Oyna

| Paralı Oyunlar
Paralı Oyunlar

| Paralı Okey
Paralı Okey

| Play65 Paralı Tavla
Play65 Paralı Tavla

| Parasına Tavla
Parasına Tavla
Left by Okey indir on gen 10, 2010 11:23

# re: Modifica delle proprietà e INotifyPropertyChanged

Requesting Gravatar...
how are you babyy
Left by sohbet on feb 26, 2011 9:59

# re: Modifica delle proprietà e INotifyPropertyChanged

Requesting Gravatar...
verSSy blog thanks admin mynet sohbet & sohbet & bizim mekan
Left by delo on mag 20, 2015 10:47

# re: Modifica delle proprietà e INotifyPropertyChanged

Requesting Gravatar...
Many thanks exclusively for this specific website. Any person undoubtedly study much concerning the difficulty, you have insured many sides.
Left by brimma on ott 24, 2016 11:23

# re: Modifica delle proprietà e INotifyPropertyChanged

Requesting Gravatar...
What true fantastic and in addition important write-up, that Stieglitz difficulty is incredibly satisfying. Keep producing with all the useful manage, ideal wishes meant for supplying these records.
Left by murder mystery dinner theatre on dic 02, 2016 7:52

# re: Modifica delle proprietà e INotifyPropertyChanged

Requesting Gravatar...
very thanks admin agario & chat
Left by sohbet on dic 04, 2016 9:17

# re: Modifica delle proprietà e INotifyPropertyChanged

Requesting Gravatar...
You made some decent points there. I looked on the internet for the issue and found most individuals will go along with with your website.
Left by Pilates classes in Fulham on dic 16, 2016 6:48

# re: Modifica delle proprietà e INotifyPropertyChanged

Requesting Gravatar...
Electrician in North London
Left by Electrician in North London on dic 19, 2016 11:02

# re: Modifica delle proprietà e INotifyPropertyChanged

Requesting Gravatar...
EN GÜZEL SOHBET
Left by sohbet sitesi on set 22, 2017 3:24
Comments have been closed on this topic.