繁体   English   中英

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

[英]Visual Studio creates a property instead of a method event handler. Why?

我刚刚为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;

如果你点击Tab两次,你会发现它是在事件处理程序的情况下“正确”生成的。

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

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

因此,当您使用它时创建属性这一事实似乎是By Design,即使在事件处理程序的情况下也没有意义。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM