2010-12-03 5 views
3

Comment PropertyChangedEventHandler est-il utilisé? Pouvez-vous me dire ce que fait ce morceau de code dans la méthode Initalize d'une classe? Il existe une classe dans le projet sur lequel nous travaillons qui a une méthode Initialize privée. Et il y a un peu de code dans cette méthode que je veux discuter.
Mais d'abord, permettez-moi de décrire la classe. La classe est définie comme suit: public classe Skoobie: BaseThingy, ISkoobieComment PropertyChangedEventHandler est-il utilisé?

Donc, cela signifie que la classe "Skoobie" a deux parents dont elle hérite. Quelles sont toutes les implications à ce sujet?

Quoi qu'il en soit, la méthode initialiser est quelque chose comme ceci:

private void Initialize() 
{ 
      this.PropertyChanged += (o, e) => 
       { 
        If (e != null) 
        { 
         // some stuff is done 
        } 

       }; 
} 

Maintenant, « PropertyChanged » est un membre de la classe parente « BaseThingy » qui est défini comme suit:

événement public PropertyChangedEventHandler PropertyChanged; Quel est le code this.PropertyChanged + = (o, e) => ... tout? Est-ce un truc de LINQ?

Répondre

4

Il s'agit d'une expression lambda (http://msdn.microsoft.com/en-us/library/bb397687.aspx) en cours d'ajout à l'événement PropertyChanged.
Cet événement est défini dans l'interface INotifyPropertyChanged: http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx
Cet événement est fondamental pour des choses comme la liaison de données dans WPF/Silverlight. Vous l'utiliseriez vous-même pour définir un objet de données comme étant sale. J'espère que cela t'aides.

Également pour la classe publique Skoobie: BaseThingy, ISkoobie C# n'a pas d'héritage multiple. Vous pouvez cependant implémenter plusieurs Interfaces (dans votre cas, ISkoobie est une interface et BaseThingy est la classe de base)

+0

Très bien. Je vous remercie. – xarzu