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