C# -  Implementando a interface INotifyPropertyChanged - I


Hoje temos uma dica básica para melhorar o seu código na implementação da interface INotifyPropertyChanged.

Se você procurar por exemplos onde a implementação da interface INotifyPropertyChanged é feita, na maioria deles vai encontrar a implementação sendo feita na própria classe, e, na chamada da notificação, vai notar que esta sendo passado o nome da propriedade que esta sendo alterada.

Tomando como exemplo uma classe Cliente com apenas uma propriedade Nome (para ficar mais simples), o código mais encontrado estaria assim:

Não há nada errado com este código, ele vai funcionar, mas, podemos melhorar a implementação, e, usando recursos da linguagem C# tornar o código mais fácil de manter.

Vamos criar uma classe abstrata, que eu vou chamar de NotifyBase e vamos fazer a implementação da interface nessa classe. O código fica assim:

Aqui estamos a implementando a interface e usando o atributo CallerMemberName, do namespace System.Runtime.CompilerServices, que é um recurso disponível a partir da versão 5.0 do C# e da plataforma .NET 4.5.

Ao utilizar esse atributo não precisamos mais passar o nome da propriedade como uma string como parâmetro quando formos fazer a notificação na classe, pois ao chamar o método OnPropertyChange() no método Set da propriedade a variável prop vai vir com a string do nome da propriedade de onde o método foi chamado. Tudo isso graças ao CallerMemberName que passa o nome do membro que esta chamando o método OnPropertyChanged.

Isso evita falhas de digitação que pode causar um erro em tempo de execução.

Observe a utilização do novo operador (elvis) ?. que verifica se o valor é null e invoca o método.

Além disso agora nossa implementação fica separada da classe tornando o código mais fácil de entender.

Agora a classe Cliente ficaria assim:

Basta herdar da nossa classe abstrata NotifyBase, e, fazer a notificação sem precisar passar o nome da propriedade que será inferido pelo atributo CallerMemberName .

Bem mais simples, não é mesmo ???

Na próxima parte do artigo veremos como melhorar ainda mais o nosso código tornando mais robusto.

Pegue o código aqui: ImplementandoINotifyPropertyChanged.zip

Deitar-me faz em verdes pastos, guia-me mansamente a águas tranqüilas.Refrigera a minha alma; guia-me pelas veredas da justiça, por amor do seu nome.
Salmos 23:2,3

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?

 

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

 

Referências:


José Carlos Macoratti