namespace Events;

class Program
{
    static void Main()
    {
        var source = new Eventful();
        source.Announcement += m => Console.WriteLine("Zdarzenie Announcement: " + m);
    }

    // This example shows how not to do something. To see the compiler error, change
    // Ten przykład pokazuje rozwiązanie, którego nie należy stosować. Aby zobaczyć 
    // błąd kompilacji, zmień #if false na #if true
#if false
    public static void HowNotToRaiseAnEvent()
    {
        var source = new Eventful();
        source.Announcement("Czy to zadziala?"); // Nie, tego kodu nie uda się skompilować!
    }
#endif

    // Ten przykład pokazuje postać typu zdefiniowanego w .NET. A ponieważ jest on
    // zdefiniowany, my nie musimy definiować go samodzielnie; stąd został on 
    // umieszczony w bloku #if false
#if false
    public delegate void EventHandler(object sender, EventArgs e);
#endif
}
