我有一组具有相同签名的事件,因此我正在尝试创建一个通用的提升方法,以供所有人使用。
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'
答案 0 :(得分:4)
将通用类型约束where
添加到您的签名中:
protected virtual void RaiseEvent<T>(EventHandler<T> eventToRaise, T eventArgs)
where T : EventArgs