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? P>
Je suis bien conscient de la programmation axée sur les aspects, mais je préfère le faire de l'objet orienté objet. p>
8 Réponses :
Cela dépend; Vous pouvez utiliser postSharp pour écrire un tel attribut qui est réécrit em> 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 avec: p>
Créer une classe de base de conteneurs, par exemple: Remarque: code très simplifié p> p>
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? . p>
J'utilise cette méthode, et cela fonctionne bien. P>
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. p>
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. P>
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 ... P>
Envoyer des notifications de changement de propriété Sans spécifier le nom de propriété en tant que chaîne. p> blockQuote>
à la place, écrivez des propriétés telles que ceci: p>
xxx pré> 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é). P> P>
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 P> Exemple avancé à l'aide de plusieurs mises à jour de propriétés et plusieurs commandes p> 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 P> Code de la vue Base P>
Améliorations sur la laptie.
KeNeNotFoundException) code> li>
-
Évitez de transmettre le nom code> de la propriété (en utilisant appelermembername code> attribut) li>
- Utilisez des méthodes génériques plutôt que des indexeurs
([nom "]) code>. li>
ul> Utilisation: p> xxx pré> code: p> xxx pré>
de: Devto
Il y a aussi de référence là-bas. p> p>
Voir aussi Stackoverflow.com/questions / 1315621 / ...
code.google.com/p/notifyPropertyweaver peut-être d'utilisation