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:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
VB .NET - Ponto de Vendas e Controle de Estoque - Macoratti.net