我来这里是因为我脑子里有一个程序和一些功能。
但我不确定这些功能在编程术语中被称为什么。所以我甚至无法在谷歌上进行适当的搜索。我很想知道这叫什么,这样我就可以继续我的分析和研究了。
我用C#和Windows窗体开发了一个程序。目前,它与YouTube API接口并监控聊天。我还提出了一些事件,当聊天消息到达时,以及当消息遵循某种格式/语法时。到目前为止一切都很好。
我想做的是:
如果有人使用我的软件,他只能访问二进制文件。但我想写自己的逻辑,处理我提出的一些事件。他们是怎么做到的?
我希望用户编写自己的程序/类,将其放在特定的文件夹中。我希望它有一个Start((和End((方法。在方法内部,他们可以编写代码来订阅他们选择的任何事件,并做他们需要做的事情
我已经在主循环中编写了代码,它将在应该包含用户程序的文件夹中循环,并尝试调用他们的程序/类的Start/End方法。
对我来说,作为该项目的原始作者,我可以继续在文件夹中编写代码。一旦我构建并执行。一切都很好。主程序在我添加的程序/类中触发Start/End。事件处理得也很好。
但是,如果有人使用我的软件,想处理它的事件,而不必重新编译我的代码,那该怎么办呢。他们是怎么做到的?
您有以下选项
选项1
- 创建一个包含所有必需引用的模板项目,并使用Start((/End((方法创建一个代码文件(.cs(
- 向start((/end((方法添加注释,或者添加一个代码示例,说明它们如何处理其他事件
- 该项目应该在没有任何源代码的情况下编译良好
- 如果您希望用户使用Visual Studio代码,请向他们提供使用VS代码进行编译的说明
- 如果他们要使用任何文本编辑器,您需要为他们提供一个msbuild命令行来编译他们的代码
- 最后,他们可以将.cs代码文件与您的主要项目二进制文件一起放在特定的文件夹中,并进行尝试
选项2
- 只有当您的用户也是程序员时,上述选项才会起作用
- 如果他们是半技术性的,你可以为他们提供一个更简单的格式来提供额外的事件
- 例如,创建一个json或xml格式,他们可以在其中指定事件名称和处理方式——可以是脚本,也可以从一些选项中进行选择。例如-
{
"myevents": [
{
"event": "chatUpvote",
"handler": "ThankYouHandler"
},
{
"event": "chatDownvote",
"handler": "TellMeMoreHandler"
}]
}