【发布时间】:2021-04-14 18:42:51
【问题描述】:
我正在尝试使用 VSCode 订阅事件(添加事件侦听器)。在 Visual Studio 中,我会执行以下操作来订阅...
//Subscribe to sql events
myClassObj.MySQLEvents += MyModule_MySQLEvents;
如果要退订,我会使用...
//Unsubscribe from sql events
myClassObj.MySQLEvents -= MyModule_MySQLEvents;
通常,在键入myClassObj.MySQLEvents += 之后,VS 会开始自动添加事件处理程序方法的模板,帮助您命名它等等。但是,使用 VSCode 我键入相同的内容,它什么也不做(就 IntelliSense/自动完成而言)去)。有没有办法我应该在 VSCode 中做不同的事情?
此外,当我尝试手动添加事件侦听器,然后尝试添加以下回调方法以触发事件时,我收到错误。
private void MyModule_MySQLEvents(object sender, EventArgs e) {}
我得到的错误是 csharp(CS0120)...
非静态字段、方法或 属性“Program.MyModule_MySQLEvents(对象,EventArgs)” [我的申请]
注意:不确定是否重要,但我是第一次在控制台应用程序中尝试此操作(在 Main() 方法内)。通常,当它在 VS 中为我工作时,我会在 Form 构造方法中执行此操作。
【问题讨论】:
-
我不确定这是否重要,但是,控制台应用程序不是事件驱动的环境。所以,我猜你不会得到 VS 的“自动”生成代码的奢侈。我敢打赌,在这种情况下,您将需要手动订阅和实现事件签名。
-
我认为这与我的控制台应用程序的
Main()方法是 STATIC 的事实有关。我收到错误An object reference is required for the non-static field, method, or property. -
如果这适用于您使用 win forms 应用程序...您是否考虑过创建 win forms 应用程序然后将应用程序输出设置为控制台。这很奇怪,我同意,但它应该可以工作并为您提供您所描述的自动生成代码。我假设代码的作用未知。
-
我只是说,鉴于控制台应用程序不是事件驱动的,您可能需要跳过一些环节才能使事件正常工作。如果您使用 win forms 应用程序,这将不是必需的,您尝试实施的事件将更适合环境。同样,在不知道代码在做什么的情况下,这完全是猜测。
-
之前,我使用 Visual Studio 2019 来获得这种效果。现在我使用 Visual Studio Code 作为 IDE,到目前为止,这是一个完全不同的世界。从未在 VSCode 中创建过表单应用程序。不确定我是否会得到相同的结果。我真的只是在寻找有关某人如何将事件侦听器添加到 VSCode 中的控制台应用程序的指导。
标签: c# visual-studio-code event-listener