环境:MS SQL Server,EF,WCF-RIA-Service,Sliverlight
尝试为异步调用完成事件定义一个事件,如:
public event EventHandler<int> MySaveComplete;
此事件是在DB中调用SP并返回ID值(int)。
但是在尝试编译代码时收到了错误消息:
类型'int'不能用作类型参数'TEventArgs' 泛型类型或方法'System.EventHandler'。没有 拳击从'int'转换为'System.EventArgs'
如何解决此问题?
答案 0 :(得分:1)
EventHandler<T>
要求泛型参数为EventArgs
类型(即从中继承的一个)。所以,你应该创建自己的类:
public class MySaveCompleteEventArgs : EventArgs
{
public MySaveCompleteEventArgs(int id)
{
ID = id;
}
public int ID { get; private set; }
}
并将其用作EventHandler<T>
参数:
public event EventHandler<MySaveCompleteEventArgs> MySaveComplete;
事件提升:
protected void OnMySaveComplete(int id)
{
if (MySaveComplete == null)
return;
MySaveComplete(this, new MySaveCompleteEventArgs(id));
}
您也可以使用Action<int>
委托作为事件类型。