File: dotnet04.cs - Tab length: 1 2 4 8 - Lines: on off - No wrap: on off


class MaClasse
{
 private Modifier<int> modifier;
 private int    counter;

 public MaClasse ()
 {
  this.modifier = new Modifier<int> (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<T>
{
 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);
 }
}