事件默认初始化程序

3

我以前使用的是以下内容:

public event EventHandler OnComplete = delegate { };

我不确定这个叫什么名字,是"事件默认初始化器"吗?

但问题出现在我从EventArgs派生,创建了自己的EventHandler并决定使用相同的方法。请看:

public class MyEventArgs : EventArgs
{
    int result;
    public int Result
    {
        get
        {
            if (exceptionObject == null)
                return result;
            else
                throw new InvalidOperationException();
        }
        internal set { result = value; }
    }

    Exception exceptionObject;
    public Exception ExceptionObject
    {
        get { return exceptionObject; }
        internal set { exceptionObject = value; }
    }
}

public delegate EventHandler MyEventHandler(object sender, MyEventArgs e);

public class MyOperation
{
    public event MyEventHandler OnOperationComplete = delegate { };
}

所以,这行代码是:
public event MyEventHandler OnOperationComplete = delegate { };

引起问题的原因。

我该如何为“我的”事件进行适当的默认初始化?

2个回答

5
public event MyEventHandler OnOperationComplete = (sender, args) => { return null; };

我认为你的意思是:
public delegate void MyEventHandler(object sender, MyEventArgs e);

不是

public delegate EventHandler MyEventHandler(object sender, MyEventArgs e);

返回值类型肯定是void,就是这样...我今天是瞎了吗。而且public event MyEventHandler OnOperationComplete = delegate { };工作得很好。谢谢! - undefined

0
public event Action OnDied = delegate { };

最简单的方法


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接