Visual Studio创建属性而不是方法事件处理程序.为什么
本文关键字:方法 事件处理 程序 为什么 Studio 创建 属性 Visual | 更新日期: 2023-09-27 18:02:54
我刚刚让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'的字段存根
所以,当你使用这个属性时,创建属性的事实似乎是由设计的,即使在事件处理程序的情况下,它没有意义。