0

我在这里是因为我有一个程序和一些功能。

但我不确定这些功能在编程术语中的名称。所以我什至无法对此进行适当的谷歌搜索。我很想知道这叫什么,这样我就可以推进我的分析和研究。

我用 C# 和 Windows 窗体开发了一个程序。目前它与 YouTube API 接口并监控聊天。当聊天消息到达以及消息遵循某种格式/语法时,我还提出了一些事件。到目前为止一切正常。

我想做的是:

如果有人使用我的软件,他只能访问二进制文件。但想编写自己的逻辑,处理我提出的一些事件。他们是怎么做到的?

我希望用户编写自己的程序/类,将其放在特定的文件夹中。我希望它有一个 Start() 和 End() 方法。在方法内部,他们可以编写代码来订阅他们选择的任何事件并做他们需要做的事情。

我已经在我的主循环中编写了代码,它将遍历应该包含用户程序的文件夹,并尝试调用他们的程序/类的 Start/End 方法。

对我来说,作为项目的原始作者,我可以继续在文件夹中编写代码。一旦我构建并执行。一切正常。主程序在我添加的程序/类中触发开始/结束。事件也处理得很好。

但是如果有人使用我的软件,想要处理它的事件,而不需要重新编译我的代码,那又如何呢?他们是怎么做到的?

4

1 回答 1

0

您有以下选项
选项 1

  • 使用 Start() / End() 方法创建一个包含所有必需引用的模板项目和一个代码文件 (.cs)。
  • 向 start() / end() 方法添加注释,或添加它们如何处理附加事件的代码示例。
  • 该项目应该可以在没有主项目的任何源代码的情况下正常编译。
  • 如果您希望用户使用 Visual Studio Code,请为他们提供使用 VS 代码编译的说明。
  • 如果他们要使用任何文本编辑器,您需要为他们提供 msbuild 命令行来编译他们的代码。
  • 最后,他们可以将 .cs 代码文件与您的主项目二进制文件一起放在特定文件夹中并尝试一下。

选项 2

  • 仅当您的用户也是程序员时,上述选项才有效。
  • 如果他们是半技术人员,您可以为他们提供更简单的格式来提供额外的事件。
  • 例如,创建一个 json 或 xml 格式,他们可以在其中指定事件名称以及他们希望如何处理它 - 可以是脚本,也可以从某些选项中进行选择。例如 -
    {
      "myevents": [
      {
        "event": "chatUpvote",
        "handler": "ThankYouHandler"
      },
     {
       "event": "chatDownvote",
       "handler": "TellMeMoreHandler"
      }]
    }
于 2020-12-29T11:51:00.923 回答