public void ChildChanged(object sender, EventArgs e) { if (sender is IReportChange) { IReportChange Child = (IReportChange)sender; this.HasChanged = Child.HasChanged; } }
// 1 - Ajoutez la méthode Add à la classe ReportChangeList : // 2 - La méthode Add prend en paramètre un type répondant aux //contraintes de la classe. L’objet passé en paramètre à la //méthode implémente donc l’interface IReportChange et il peut // être converti dans le type de l’interface ce qui permet à //l’objet de type ReportChangeList de s’abonner à l’évènement //Changed de l’objet passé en paramètre avant de l’ajouter //à la liste children. // 3 -Il n’y a plus qu’à modifier la méthode Add pour déterminer que // la clé est unique parmi les éléments de la liste avant de faire l’ajout : public void Add(T Child) { IKey childKey = (IKey)Child; if (this[childKey.Key] == null) { IReportChange child = (IReportChange)Child; child.Changed += new EventHandler(ChildChanged); this.children.Add(Child); } }