自定义了2种数据类型:dt1、d2t,下面的代码继承了EventArgs,并自定义委托和事件//继承EventArgs
public class MyEventArgs1 : EventArgs
{
public dt1 src;
public MyEventArgs1(dt1 src)
{
this.src = src;
}public class MyEventArgs2 : EventArgs
{
public dt2 src;
public MyEventArgs1(dt2 src)
{
this.src = src;
}
//定义委托
public delegate void DelegateMethod1(object sender,MyEventArgs1 e);
public delegate void DelegateMethod2(object sender,MyEventArgs2 e);
//定义事件
public event DelegateMethod1 mEvent1;
public event DelegateMethod2 mEvent2;还有触发、响应事件的代码,就不一一罗列了。
问题:在实际项目中,我的自定义数据类型多达数十种,其对应的委托和事件也多达数十个,难道我需要都将其逐一写出来吗?
注意到这几十个事件的区别仅仅是传递的事件参数的类型不同,我想到的一个办法是继承EventArgs时直接写成下面的样子:public class MyEventArgs1 : EventArgs
{
public object src;
public MyEventArgs1(object src)
{
this.src = src;
}
这样我就只写一个委托和相应的事件就行了,到了事件处理程序中,再去转换事件参数的类型:dt1 e1=(dt1)e;不知道这样做有什么利弊?
另外,是否可以用泛型来解决这个事件参数类型不确定的问题?如果可行,会很理想的。我对泛型比较陌生,望高手指点,谢谢!
public class MyEventArgs1 : EventArgs
{
public dt1 src;
public MyEventArgs1(dt1 src)
{
this.src = src;
}public class MyEventArgs2 : EventArgs
{
public dt2 src;
public MyEventArgs1(dt2 src)
{
this.src = src;
}
//定义委托
public delegate void DelegateMethod1(object sender,MyEventArgs1 e);
public delegate void DelegateMethod2(object sender,MyEventArgs2 e);
//定义事件
public event DelegateMethod1 mEvent1;
public event DelegateMethod2 mEvent2;还有触发、响应事件的代码,就不一一罗列了。
问题:在实际项目中,我的自定义数据类型多达数十种,其对应的委托和事件也多达数十个,难道我需要都将其逐一写出来吗?
注意到这几十个事件的区别仅仅是传递的事件参数的类型不同,我想到的一个办法是继承EventArgs时直接写成下面的样子:public class MyEventArgs1 : EventArgs
{
public object src;
public MyEventArgs1(object src)
{
this.src = src;
}
这样我就只写一个委托和相应的事件就行了,到了事件处理程序中,再去转换事件参数的类型:dt1 e1=(dt1)e;不知道这样做有什么利弊?
另外,是否可以用泛型来解决这个事件参数类型不确定的问题?如果可行,会很理想的。我对泛型比较陌生,望高手指点,谢谢!
{
public T src;
public MyEventArgs1(T src)
{
this.src = src;
}
}