3

环境:MS SQL Server、EF、WCF-RIA-Service、Sliverlight

尝试为异步调用完成事件定义一个事件,例如:

public event EventHandler<int> MySaveComplete;

事件是调用 DB 中的 SP 并返回 ID 值(int)。

但在尝试编译代码时收到错误消息:

类型“int”不能用作泛型类型或方法“System.EventHandler”中的类型参数“TEventArgs”。没有从“int”到“System.EventArgs”的装箱转换

如何解决这个问题?

4

1 回答 1

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>委托作为事件类型。

于 2013-08-19T16:46:30.313 回答