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);
    }
}