Visual Studio创建属性而不是方法事件处理程序.为什么



我刚刚让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; }

为什么?我不明白。我想在一个方法中处理事件。

EDIT -事件处理程序是这样声明的:

public event EventHandler<PlcLoggerEventArgs> PlcLoggerEventHandler;

如果你按两次Tab你会注意到它在事件处理程序的情况下是"正确"生成的。

如果您在Visual Studio 2010中使用"选项来帮助绑定项目"快捷键Alt+Shift+F10,在这种情况下,您的两个可能的操作是:

  • 为'PlcLoggerEventHandler'生成属性存根
  • 在…中生成'PlcLoggerEventHandler'的字段存根

所以,当你使用这个属性时,创建属性的事实似乎是由设计的,即使在事件处理程序的情况下,它没有意义。

相关内容

  • 没有找到相关文章

最新更新