Raise an interface's event in an extension method
I want to implement my own messaging system, and as part of that i've got the interface and extension method below defined:
Code:
public interface IMessage<TArgs> where TArgs : EventArgs
{
event EventHandler<TArgs> Fired;
object Sender { get; set; }
TArgs Args { get; set; }
void Dispatch();
}
public static class MessageExtensionMethods
{
public static void Dispatch(this IMessage<EventArgs> Message)
{
if (Message.Fired != null)
Message.Fired.Invoke(Message.Sender, Message.Args);
}
}
Trouble is, i get an error:
Code:
The event 'XNAEngine.Messaging.IMessage<System.EventArgs>.Fired' can only appear on the left hand side of += or -=
This error makes sense, however i want to raise the event in the extension method of the interface so i don't need an identical method in each class.
Any ideas? I've tried searching, but all i end up with is general info about extension methods.