Results 1 to 1 of 1

Thread: Raise an interface's event in an extension method

Threaded View

  1. #1

    Thread Starter
    Not NoteMe SLH's Avatar
    Join Date
    Mar 2002
    Location
    192.168.0.1 Preferred Animal: Penguin Reason for errors: Line#38
    Posts
    3,051

    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.
    Last edited by SLH; Apr 30th, 2009 at 05:22 PM.
    Quotes:
    "I am getting better then you guys.." NoteMe, on his leet english skills.
    "And I am going to meat her again later on tonight." NoteMe
    "I think you should change your name to QuoteMe" Shaggy Hiker, regarding NoteMe
    "my sweet lord jesus. I've decided never to have breast implants" Tom Gibbons
    Have I helped you? Please Rate my posts.


Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width