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 Friday, March 14, 2008 8:54 AM

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 9:42 AM

# 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 10:50 AM

# re: Modifica delle proprietà e INotifyPropertyChanged

Left by muhabbet yap on Jul 17, 2009 4:09 AM

# re: Modifica delle proprietà e INotifyPropertyChanged

Requesting Gravatar...
thank
Left by islamisayfa on Aug 28, 2009 8:57 PM

# re: Modifica delle proprietà e INotifyPropertyChanged

Left by sohbet on Sep 07, 2009 8:04 PM

# re: Modifica delle proprietà e INotifyPropertyChanged

Left by sohbet on Sep 10, 2009 1:29 AM

# 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 Jan 10, 2010 10:23 AM

# re: Modifica delle proprietà e INotifyPropertyChanged

Requesting Gravatar...
how are you babyy
Left by sohbet on Feb 26, 2011 8:59 PM

# re: Modifica delle proprietà e INotifyPropertyChanged

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

# 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 Oct 24, 2016 10:23 AM

# 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 Dec 02, 2016 6:52 AM

# re: Modifica delle proprietà e INotifyPropertyChanged

Requesting Gravatar...
very thanks admin agario & chat
Left by sohbet on Dec 04, 2016 8:17 AM

# 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 Dec 16, 2016 5:48 AM

# re: Modifica delle proprietà e INotifyPropertyChanged

Requesting Gravatar...
Electrician in North London
Left by Electrician in North London on Dec 19, 2016 10:02 AM

# re: Modifica delle proprietà e INotifyPropertyChanged

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