class MaClasse { private Modifier modifier; private int counter; public MaClasse () { this.modifier = new Modifier (this.counterGet, this.counterSet); this.counter = 3; } public void Test () { Console.WriteLine ("avant: " + this.counter); // devrait afficher "avant: 3" this.modifier.SetValue (12); Console.WriteLine ("après: " + this.counter); // devrait afficher "après: 12" } // berk public int counterGet () { return this.counter; } // et re-berk public void counterSet (int value) { this.counter = value; } } class Modifier { public delegate T MyGetValue (); public delegate void MySetValue (T value); private MyGetValue getValue; private MySetValue setValue; public Modifier (MyGetValue getValue, MySetValue setValue) { this.getValue = getValue; this.setValue = setValue; } public void SetValue (T value) { this.setValue (value); } }