مشکل با نوع جنریک EventHandler
با سلام
دوستان فرضا ما یکList تعریف میکنیم که جنریک از نوع string هست و یعنی هر عضو آن باید رشته باشد.
مثلا
کد:
List<string> list = new List<string>();
حالا در قطعه کد زیر که از سایت ماکروسافت گرفته شده گفته نوع داده باید از کلاس MyEventArgs باشد. اما میبینیم که داره از نوع SampleEventHandler بهش ارسال میشه.
کد:
using System;
using System.Collections.Generic;
//---------------------------------------------------------
public class MyEventArgs : EventArgs
{
private string msg;
public MyEventArgs( string messageData ) {
msg = messageData;
}
public string Message {
get { return msg; }
set { msg = value; }
}
}
//---------------------------------------------------------
public class HasEvent
{
// Declare an event of delegate type EventHandler of
// MyEventArgs.
public event EventHandler<MyEventArgs> SampleEvent;
public void DemoEvent(string val)
{
// Copy to a temporary variable to be thread-safe.
EventHandler<MyEventArgs> temp = SampleEvent;
if (temp != null)
temp(this, new MyEventArgs(val));
}
}
//---------------------------------------------------------
public class Sample
{
public static void Main()
{
HasEvent he = new HasEvent();
he.SampleEvent +=
new EventHandler<MyEventArgs>(SampleEventHandler);
he.DemoEvent("Hey there, Bruce!");
he.DemoEvent("How are you today?");
he.DemoEvent("I'm pretty good.");
he.DemoEvent("Thanks for asking!");
}
private static void SampleEventHandler(object src, MyEventArgs mea)
{
Console.WriteLine(mea.Message);
}
}
//---------------------------------------------------------
/*
This example produces the following results:
Hey there, Bruce!
How are you today?
I'm pretty good.
Thanks for asking!
*/