【问题标题】:Some questions regarding implementation of a scripting engine关于脚本引擎实现的一些问题
【发布时间】:2013-01-24 01:29:29
【问题描述】:

由于这很难解释,让我从图表开始:

理论讲了这么多,但我将如何实际实施呢?这甚至可能/可行吗?

想到的一些问题:

  • 如何将脚本实际加载到对象中以供 ScriptManager 保存?
  • 如何公开某些功能?我不希望他们对我的程序拥有最终的权力,只有一个域。
  • 脚本如何知道例如EngineClass?我应该在脚本中使用吗?那不需要是脚本路径中的程序集的副本吗?
  • 我听说过 MEF,这可能吗?它似乎更适合插件。
  • 如何编译脚本?

当然,我知道您无法回答所有这些问题或为我实现整个引擎。但我需要关于如何做的指示,我一直在研究这个概念很长一段时间。

提前感谢您的任何回答。

【问题讨论】:

  • 你看过 Lua 吗?显然有一些库允许您使用 .Net 中的 Lua。根据您在脚本中需要的功能,如果您的用户还没有 C# / .Net 背景,这可能更容易实现和更容易。
  • LuaInterface, Lua。我自己没用过,但是效果很好。
  • @Lobo 感谢您的链接。可悲的是 LuaInterface 似乎依赖于 VisualC++ 库,但我想让所有东西都跨平台(在 Mono 上运行)
  • 有使用 Python 的引擎,从 .Net 搜索 IronPython 或 JavaScript,我认为至少可以从 Mono 使用 IronPython。再说一次,我自己没有经验。

标签: c# scripting mono


【解决方案1】:

经过更多研究后,我偶然发现了What is the best scripting language to embed in a C# desktop application?http://blogs.msdn.com/b/abhinaba/archive/2005/11/14/492458.aspx,它似乎可以通过一些修改来满足我的要求。在我不知道之前的几周,我怎么没有偶然发现这一点。

【讨论】:

  • 注意,自 2005 年以来发生了很多变化。现在有很多解决附加代码嵌入和限制问题的方法,例如 MEF/MAF/CAS/Roslyn/Mono 的 C# 编译器。这是相当多的阅读:)
猜你喜欢
  • 2018-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-04
  • 2011-03-14
  • 1970-01-01
  • 1970-01-01
  • 2011-06-24
相关资源
最近更新 更多