【问题标题】:Creating a scripting environment for a C# program [closed]为 C# 程序创建脚本环境 [关闭]
【发布时间】:2013-08-11 14:05:27
【问题描述】:

假设我有一个连接到数据库的应用程序,它有自己的表单来呈现数据并允许更改和输入数据,如何扩展程序以供第三方扩展?

例如,第三方将能够编写用户可以运行的脚本,以提示用户输入。然后,部分脚本将获取用户输入的内容(整数/字符串/布尔值)并对其执行一些基本的编程操作、整数值的数学运算、字符串值(和其他字符串函数)的连接以及触发更多用户的逻辑测试提示等,脚本环境也将支持读/写应用程序的数据库。

这是否可以简单地通过程序可以运行的文本文件来完成,每一行对应一个特定的命令?然后应用程序将读取每一行,找出该行代表什么命令,并将其等同于 C# 代码?有没有针对这个问题的现有解决方案?

【问题讨论】:

  • 这完全取决于你想要的深度;但是,听起来您想要一个简单的“插件系统”:stackoverflow.com/questions/1070787/…
  • 您认为哪种语言适合您的应用程序用户? C#? Javascript?还有什么?

标签: c#


【解决方案1】:

这个问题相当开放,这里有一些经过验证的很棒的扩展工具:

已编译用 C# 编写的插件将使用 Managed Extensibility Framework (MEF),这是一个出色且设计良好的可扩展性选项。

脚本化在 Roselyn 准备就绪后,可能很快就可以使用 C# 扩展。

脚本也可以通过将Jurassic 集成到您的应用程序中来完成。

【讨论】:

  • 侏罗纪可能是我所追求的!
【解决方案2】:

如果您想将脚本语言嵌入到 c# 应用程序中,有几个不错的选择。 IronPythonIronSchemeIronRuby 都支持动态语言运行时,因此它们可以从主机代码访问对象。还有Boo,这是一种强类型的 CLR 语言,看起来很像 Python,但可以很容易地嵌入到 C# 应用程序中,并且与其他应用程序一样,可以与宿主应用程序交互。一般来说,嵌入过程非常简单 - Michael Foord's IronPython site has a good example

还有NLua,它应该是一个 CLR 友好的 lua 包装器,但我个人对此一无所知。

在上述所有因素中,我预计推动您选择的主要因素将是用户群的偏好。特别是对于您描述的轻量级应用程序,所有这些选择都应该非常适合。如果您希望用户能够自己进行广泛的编程,那就更复杂了,因为这些语言的 CLR 端口通常不支持与基于 C 的语言相同的二进制扩展——例如,IronPython 不能使用常规的 Perforce API 模块,因为它建立在基于 C 的二进制扩展模块之上。不过,所有 Iron* 语言都可以使用与 C# 相同的基类库 - 您可以将 System.Windows.Forms 导入其中的任何一种以创建 GUI 等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-06
    • 2013-02-27
    • 1970-01-01
    • 2023-01-17
    • 2015-03-15
    相关资源
    最近更新 更多