Click here to Skip to main content
15,888,454 members
Please Sign up or sign in to vote.
4.50/5 (2 votes)
See more:
Hello,

I've some problems with event system in C#. I'm using code, similar to that:

C#
{
    public delegate void ChangedEventHandler(object sender, EventArgs e);
    class Program
    {
        private static void Main()
        {
            GenEnvent genEvent = new GenEnvent();
            MonitorEvent monEvent = new MonitorEvent(genEvent);
            MonitorEvent monEvent2 = new MonitorEvent(genEvent);
            genEvent.listIt(1);
            Console.ReadLine();
        }
    }
    class GenEnvent
    {
        public event ChangedEventHandler Changed;
        public int i { get; set; }
        protected virtual void OnChange(EventArgs e)
        {
            if (Changed != null)
                Changed(this, e);
        }
        public void listIt(int a) { Console.WriteLine(a); OnChange(EventArgs.Empty); }
    }
    class MonitorEvent
    {
        private GenEnvent genE;
        public MonitorEvent(GenEnvent gene)
        {
            genE = gene;
            gene.Changed += new ChangedEventHandler(workout);
        }
        private void workout(object sender, EventArgs e)
        {
            if (sender == genE)
            {               
                Console.WriteLine("From registered workout {0}", sender.ToString());
            }
        }
    }
}


Question 1: Can i cast object sender to GenEvent? Any links to resources are welcome.
Question 2: How can i check the sender type? For example something like that: if(sender.GetType == GenEvent)?

Thanks.
Posted

1 solution

C#
//Casting sender to GenEvent
var s = sender as GenEnvent;
if (s != null)
{
    //Do your thing
}

//Check type of sender to be GenEvent
if(sender is GenEnvent)
    Console.WriteLine("From registered workout {0}", sender.ToString());
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900