0

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

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

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

4

2 回答 2

2

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

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

当 Roselyn 准备好时,C# 中的脚本扩展可能很快就会成为可能。

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

于 2013-08-11T14:27:26.070 回答
2

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

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

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

于 2013-08-11T18:01:15.973 回答