8
votes

Comment éviter de mettre en œuvre manuellement

Y a-t-il un moyen d'éviter cela. J'ai beaucoup de classes liées à DataGridViews et ne sont que simples collection de propriétés avec Getter et Setter par défaut. Donc, ces cours sont très simples. Maintenant, j'ai besoin d'implémenter une interface inotifypropertychanged pour eux qui augmentera beaucoup le nombre de code. Y a-t-il une classe que je peux hériter d'éviter d'écrire tout ce code ennuyeux? I Image que je peux hériter de mes cours d'une classe et décorer les propriétés avec certains attributs et cela fera la magie. Est-ce possible?

Je suis bien conscient de la programmation axée sur les aspects, mais je préfère le faire de l'objet orienté objet.


8 Réponses :


0
votes

Si vous utilisez AOP, vous pouvez essayer d'utiliser postSharp . Recherche pour POSTSHARP INOTIFYPROPERTYCHANGED et vous trouverez de nombreux articles l'expliquant, tels que Ce et Ce .


0 commentaires

9
votes

Cela dépend; Vous pouvez utiliser postSharp pour écrire un tel attribut qui est réécrit par le tisserand; Cependant, je serais tenté de simplement le faire manuellement - peut-être utiliser une méthode courante pour gérer les mises à jour des données, c'est-à-dire xxx

avec: xxx / p>


0 commentaires

5
votes

Créer une classe de base de conteneurs, par exemple: xxx

Remarque: code très simplifié


0 commentaires

0
votes

Utilisation du code Gen (disons, T4 ) est un autre moyen . Vérifiez la discussion à: Automatique inotifyPropertyChanged Mise en œuvre via la génération de code T4? .

J'utilise cette méthode, et cela fonctionne bien.


0 commentaires

1
votes

Sans AOP, je ne pense pas qu'il existe un moyen facile de moderniser cela à vos classes existantes. Cependant, vous le faites, vous aurez au moins que vous devrez changer toutes vos propriétés.

J'utilise une classe de base héritante inotifypropertychangée avec une méthode ONPROPERTYCHANGED (String NomName) pour déclencher l'événement. J'utilise ensuite un extrait de code Visual Studio pour créer des propriétés qui appellent automatiquement surpropertychanged dans le setter de propriétés.


0 commentaires

0
votes

Je viens de trouver ActiveShadRP - Automatique inotifyPropertychangned , je n'ai pas encore utilisé, mais ça a l'air bien.

Pour citer du site Web de son site Web ...


Envoyer des notifications de changement de propriété Sans spécifier le nom de propriété en tant que chaîne.

à la place, écrivez des propriétés telles que ceci: xxx

Notez qu'il n'est pas nécessaire d'inclure le nom de la propriété en tant que chaîne. ActiveShaparpe de manière fiable et correctement indiquée pour elle-même. Il fonctionne en fonction du fait que votre implémentation de propriété transmet le champ de support (_FOO) par réf. (ActiveShaparp utilise que "par réfute" appelez pour identifier quel champ a été transmis, et du champ, il identifie la propriété).


0 commentaires

1
votes

Voici une solution similaire à Marc, qui a été étendue pour permettre à plusieurs propriétés surpropertychanges et multiples analyséecanexécutéchisé

l'exemple le plus simple d'utilisation xxx

Exemple avancé à l'aide de plusieurs mises à jour de propriétés et plusieurs commandes xxx

L'exemple avancé Les appels ONPROPERTY ont été modifiés sur le prénom et le nom complet et appelle RAISCANECUTÉCHANGE POUR COMMAND1 et COMMAND2

Code de la vue Base xxx


0 commentaires

0
votes

Améliorations sur la laptie.

  • Ceci gère un cas où il n'y a pas de tel élément dans le dictionnaire (qui donne dans un KeNeNotFoundException)
  • Évitez de transmettre le nom de la propriété (en utilisant appelermembername attribut)
  • Utilisez des méthodes génériques plutôt que des indexeurs ([nom "]) .

    Utilisation: xxx

    code: xxx

    de: Devto Il y a aussi de référence là-bas.


0 commentaires