Saqib Ullah

BootStrapper Know How

  Home  |   Contact  |   Syndication    |   Login
  93 Posts | 1 Stories | 380 Comments | 15 Trackbacks

News



Article Categories

Archives

Post Categories

Blogging websites

Favourite Blogs

Private Links

Sites

According to C# specification interface contain a signature of events but a complete and brief implementation of events through interface is not available on the net.
 
First you identify the interface
 
    public interface IControl
    {
        // Raise this event.
        event EventHandler OnCommand;
    }
 
According to my need I create a class that inherit from System.EventArgs
 
    public class CommandArgs : EventArgs
    {
        public string CommandName;
    }
 
My OutCommand class is a implementation of IControl interface that contain an OnCommand event.
 
public class OutCommnad : IControl
    {
        public OutCommnad()
        {}
 
        // Create an event from interface event
        event EventHandler CommandEvent;
        event EventHandler IControl.OnCommand
        {
            add
            {
                if (CommandEvent != null)
                {
                    lock (CommandEvent)
                    {
                        CommandEvent += value;
                    }
                }
                else
                {
                    CommandEvent = new EventHandler(value);
                }
            }
            remove
            {
                if (CommandEvent != null)
                {
                    lock (CommandEvent)
                    {
                        CommandEvent -= value;
                    }
                }
            }
        }
 
        public void Command()
        {
            EventHandler handler = CommandEvent;
            if (handler != null)
            {
                //My custom class that passed as arguments.
                CommandArgs cmd = new CommandArgs();
                cmd.CommandName = "Test Application event.";
                handler(this, cmd);
            }
        }
    }
 
Calling of IControl.OnCommand event.
 
    OutCommnad outCommand = new OutCommnad();
    IControl con = (IControl)outCommand;
    con.OnCommand +=new EventHandler(con_OnCommand);
    outCommand.Command();

IControl.OnCommand event function.
 
        void con_OnCommand(object sender, CommandArgs e)
        {
            string str = e.CommandName;
            Console.WriteLine(str);
        }
 
posted on Monday, April 07, 2008 5:49 PM

Feedback

# re: Implement events through interface in C# 5/21/2008 1:10 AM oliver
The event handler function con_OnCommand(), generates error when CommandArgs param in signature...instead it requires EventArgs param...why ?

# re: Implement events through interface in C# 9/13/2008 5:41 PM Mp3 Film Program Download
Thanks j

# re: Implement events through interface in C# 2/15/2009 3:30 PM Yen
Can apply delegate with event instead of EventArgs ?

Post A Comment
Title:
Name:
Email:
Website:
Comment:
Verification: