我刚刚为VS生成了一个事件处理程序,它创建了一个属性而不是一个方法。我不明白。我刚刚在VS 2012中尝试了一个单独的测试,它按预期工作。
首先,这是我的测试,我认为它会起作用:
private static void EventTest()
{
Geek skeet = new Geek();
skeet.SomeEvent += skeet_SomeEvent;
}
当我让VS为我生成处理程序时,它创建了这个。
static void skeet_SomeEvent(object sender, EventArgs e)
{
throw new NotImplementedException();
}
这是有道理的。调用事件时将调用该方法。
现在,问题是......我在VS 2010中处理现有项目,当我做同样的事情时(让VS生成处理程序):
private void SubscribeToPlcDataChangeEvents()
{
_plc.PlcLoggerEventHandler += _plcLoggerEventHandler;
}
它创建了一个属性:
public EventHandler<PlcLoggerEventArgs> _plcLoggerEventHandler { get; set; }
为什么呢?我不明白。我想在方法中处理事件。
编辑 - 这是声明事件处理程序的方式:
public event EventHandler<PlcLoggerEventArgs> PlcLoggerEventHandler;
答案 0 :(得分:3)
如果你点击 Tab 两次,你会注意到它是在事件处理程序的情况下“正确”生成的。
如果在Visual Studio 2010中使用“帮助绑定项目的选项”快捷方式 Alt + Shift + F10 ,在这种情况下,您可能采取的两种行动是:
因此,当你使用它时创建一个属性的事实似乎是By Design,即使在事件处理程序的情况下也没有意义。