我有一组具有相同签名的事件,所以我试图创建一个通用的引发方法以供所有事件使用。
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);
}
}
}
但是在尝试编译时出现此错误:
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'