Ti consiglio di fare un programma di prova per mettere in pratica quello che c'è scritto su msdn.
Ne ho fatto uno banalissimo, cercando di seguire la forma presentata negli esempi:
Main.css
codice:
using System;
namespace Tests
{
class MainClass
{
public static void Main(string[] args)
{
MainClass mc = new MainClass();
Console.WriteLine("Hello World!");
Persona p = new Persona(10);
p.CrescitaPersona += new Persona.CrescitaPersonaGestore(mc.InRispostaAllaCrescita);
Console.WriteLine("La persona creata ha {0} anni", p.Eta);
p.CresciUnAnno();
}
public void InRispostaAllaCrescita(object sender, PersonaEventArgs pea){
Console.WriteLine("{GESTORE EVENTO} >>> " + pea.Text);
}
}
}
Persona.cs
codice:
using System;
namespace Tests
{
public class PersonaEventArgs{
public string Text{
get;set;
}
public PersonaEventArgs(string s){
Text = s;
}
}
public class Persona
{
public int Eta{ get; set; }
public delegate void CrescitaPersonaGestore(object sender, PersonaEventArgs pea);
public event CrescitaPersonaGestore CrescitaPersona;
public Persona(int etaIniziale)
{
Eta = etaIniziale;
}
public void CresciUnAnno(){
Eta++;
RaiseEvent();
}
public void RaiseEvent(){
CrescitaPersona(
this,
new PersonaEventArgs("La persona è cresciuta. Ora ha " + Eta + " anni")
);
}
}
}
Ho testato in MonoDevelop.
Ciao