Asp.net 尝试创建泛型事件处理程序引发程序时出错

Asp.net 尝试创建泛型事件处理程序引发程序时出错,asp.net,events,generics,event-handling,Asp.net,Events,Generics,Event Handling,我有一组具有相同特征的事件,所以我尝试创建一个通用的提升方法来用于所有事件 protected virtual void RaiseEvent<T>(EventHandler<T> eventToRaise, T eventArgs) { if (eventToRaise != null) { try { eventToRaise(this, eventArgs); }

我有一组具有相同特征的事件,所以我尝试创建一个通用的提升方法来用于所有事件

protected virtual void RaiseEvent<T>(EventHandler<T> eventToRaise, T eventArgs)
{
    if (eventToRaise != null)
    {
        try
        {
            eventToRaise(this, eventArgs);
        }
        catch (Exception ex)
        {
            throw new Exception("a problem accured while raising event : " + ex.Message);
        }
    }
}
protected virtual void RaiseEvent(EventHandler eventoraise,T eventArgs)
{
if(eventoraise!=null)
{
尝试
{
eventToRaise(本,eventArgs);
}
捕获(例外情况除外)
{
抛出新异常(“引发事件时出现问题:“+ex.Message”);
}
}
}
但我在尝试编译时遇到以下错误:

The type 'T' cannot be used as type parameter 'TEventArgs' in the generic type or method 'System.EventHandler<TEventArgs>'. There is no boxing conversion or type parameter conversion from 'T' to 'System.EventArgs'
类型“T”不能用作泛型类型或方法“System.EventHandler”中的类型参数“TEventArgs”。没有从“T”到“System.EventArgs”的装箱转换或类型参数转换

在签名中添加泛型类型约束
,其中

protected virtual void RaiseEvent<T>(EventHandler<T> eventToRaise, T eventArgs) 
    where T : EventArgs
protected virtual void RaiseEvent(EventHandler eventoraise,T eventArgs)
其中T:EventArgs

在签名中添加泛型类型约束
,其中

protected virtual void RaiseEvent<T>(EventHandler<T> eventToRaise, T eventArgs) 
    where T : EventArgs
protected virtual void RaiseEvent(EventHandler eventoraise,T eventArgs)
其中T:EventArgs

谢谢,如果我将EventArgs的子类作为T发送,这仍然有效吗?谢谢,如果我将EventArgs的子类作为T发送,这仍然有效吗?