2009-12-15 6 views
0

Je dois créer une instance de classe pour fournir des informations lorsque sa propriété est modifiée. Fondamentalement, j'essaie d'implémenter un mécanisme de liaison, qui surveillera les propriétés de la classe liée et informera le système que la propriété a été modifiée.La propriété .NET a changé de sensibilité

La seule solution que j'ai trouvé est de:

  • Ajouter un événement PropertyChanged en utilisant Emit
  • Get PropertyInfo
  • Obtenez setMethod IntPtr
  • Créer un nouveau setMethod en utilisant Emit qui encapsule l'ancienne méthode et appelez le nouvel événement
  • Modifiez SetMethod en utilisant le nouveau

Existe-t-il un autre moyen? Et si ce n'est pas le cas, y a-t-il un exemple de ce qu'il faut faire ou existe-t-il une solution existante?

Merci pour votre réponse.

+0

Et la classe que vous voulez surveiller est "scellée" de sorte que vous ne pouvez pas l'implémenter directement par exemple INotifyPropertyChanged? –

Répondre

2

Y a-t-il une raison pour laquelle vous n'implémentez pas l'interface INotifyPropertyChanged? J'ai rassemblé un échantillon rapide dans ma réponse à this question.

+0

Oui, la raison principale était de garder le processus de liaison transparent sans forcer les développeurs à modifier les classes existantes afin d'utiliser le nouveau processus de liaison. Je connais l'interface INotifyPropertyChanged et son comportement. Néanmoins l'INotifyPropertyChanged est la solution la plus propre et je l'utiliserai probablement. Merci pour votre réponse. –

Questions connexes