Click here to Skip to main content
15,920,508 members
Home / Discussions / C#
   

C#

 
AnswerRe: C# application to parse a sharepoint list Pin
Not Active12-Jan-09 8:37
mentorNot Active12-Jan-09 8:37 
QuestionInsert a Page Break In word Using C# Pin
vikram_asv12-Jan-09 7:57
vikram_asv12-Jan-09 7:57 
AnswerRe: Insert a Page Break In word Using C# Pin
Jimmanuel12-Jan-09 9:38
Jimmanuel12-Jan-09 9:38 
QuestionGeneric event, or raise event based on generic type. Pin
DaveyM6912-Jan-09 7:23
professionalDaveyM6912-Jan-09 7:23 
AnswerRe: Generic event, or raise event based on generic type. Pin
Gideon Engelberth12-Jan-09 8:46
Gideon Engelberth12-Jan-09 8:46 
GeneralRe: Generic event, or raise event based on generic type. Pin
DaveyM6912-Jan-09 8:52
professionalDaveyM6912-Jan-09 8:52 
GeneralRe: Generic event, or raise event based on generic type. Pin
Gideon Engelberth12-Jan-09 11:58
Gideon Engelberth12-Jan-09 11:58 
AnswerRe: Generic event, or raise event based on generic type. Pin
S. Senthil Kumar12-Jan-09 9:55
S. Senthil Kumar12-Jan-09 9:55 
I think I got a working version of your second idea. The trick was to use event accessors. The type of the value parameter in the Dictionary should be a list - I took a shortcut so it works only for one subscriber per type Smile | :)

class TEventArgs<T> : EventArgs { public T Value { get; set; } }

class Test
{
    Dictionary<Type, object> d = new Dictionary<Type,object>();

    public event EventHandler<TEventArgs<int>> MyEvent1
    {
        add
        {
           d.Add(typeof(int), value);
        }

        remove
        {
            d.Remove(typeof(int));
        }
    }

    public event EventHandler<TEventArgs<string>> MyEvent2
    {
        add
        {
            d.Add(typeof(string), value);
        }

        remove
        {
            d.Remove(typeof(string));
        }
    }

    public void OnNotify<T>(T t)
    {
        EventHandler<TEventArgs<T>> del = (EventHandler<TEventArgs<T>> )    d[t.GetType()];
        del(this, new TEventArgs<T>() { Value = t });
    }
}

static void Main()
{
    Test t = new Test();
    t.MyEvent1 += new EventHandler<TEventArgs<int>>((sender, args) => Console.WriteLine(args.Value + 1));
    t.MyEvent2 += new EventHandler<TEventArgs<string>>((sender, args) => Console.WriteLine(args.Value.Trim()));

    t.OnNotify(23);                // Prints 24
    t.OnNotify("Senthil Rocks  "); // Prints Senthil Rocks


The code inside the add and remove accessors is very similar, but the compiler doesn't like if the event declaration has a generic parameter.

Regards
Senthil [MVP - Visual C#]
_____________________________
My Home Page |My Blog | My Articles | My Flickr | WinMacro

GeneralRe: Generic event, or raise event based on generic type. Pin
DaveyM6912-Jan-09 10:07
professionalDaveyM6912-Jan-09 10:07 
GeneralRe: Generic event, or raise event based on generic type. Pin
Mark Churchill12-Jan-09 16:45
Mark Churchill12-Jan-09 16:45 
GeneralRe: Generic event, or raise event based on generic type. Pin
S. Senthil Kumar12-Jan-09 18:40
S. Senthil Kumar12-Jan-09 18:40 
GeneralRe: Generic event, or raise event based on generic type. Pin
Mark Churchill12-Jan-09 19:01
Mark Churchill12-Jan-09 19:01 
QuestionRe: Generic event, or raise event based on generic type. Pin
Wendelius12-Jan-09 11:16
mentorWendelius12-Jan-09 11:16 
AnswerRe: Generic event, or raise event based on generic type. [modified] Pin
DaveyM6912-Jan-09 22:58
professionalDaveyM6912-Jan-09 22:58 
GeneralRe: Generic event, or raise event based on generic type. Pin
Wendelius13-Jan-09 9:47
mentorWendelius13-Jan-09 9:47 
GeneralRe: Generic event, or raise event based on generic type. Pin
DaveyM6914-Jan-09 0:23
professionalDaveyM6914-Jan-09 0:23 
GeneralRe: Generic event, or raise event based on generic type. Pin
Wendelius14-Jan-09 2:30
mentorWendelius14-Jan-09 2:30 
GeneralRe: Generic event, or raise event based on generic type. Pin
DaveyM6914-Jan-09 3:25
professionalDaveyM6914-Jan-09 3:25 
GeneralRe: Generic event, or raise event based on generic type. Pin
Wendelius14-Jan-09 3:42
mentorWendelius14-Jan-09 3:42 
GeneralRe: Generic event, or raise event based on generic type. Pin
DaveyM6914-Jan-09 11:41
professionalDaveyM6914-Jan-09 11:41 
GeneralRe: Generic event, or raise event based on generic type. Pin
Wendelius14-Jan-09 11:59
mentorWendelius14-Jan-09 11:59 
GeneralRe: Generic event, or raise event based on generic type. Pin
DaveyM6915-Jan-09 3:13
professionalDaveyM6915-Jan-09 3:13 
GeneralRe: Generic event, or raise event based on generic type. Pin
Wendelius15-Jan-09 3:19
mentorWendelius15-Jan-09 3:19 
GeneralRe: Generic event, or raise event based on generic type. Pin
DaveyM6915-Jan-09 4:01
professionalDaveyM6915-Jan-09 4:01 
GeneralRe: Generic event, or raise event based on generic type. Pin
Wendelius15-Jan-09 10:27
mentorWendelius15-Jan-09 10:27 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.