c# - 向 .NET 应用程序添加脚本功能

标签 c# .net scripting compiler-construction

我有一个用 C# 编写的小游戏。它使用数据库作为后端。它是 一个trading card game ,我想将卡片的功能实现为一个脚本。

我的意思是我本质上有一个接口(interface),ICard,一个卡片类实现了它(public class Card056: ICard)并且它包含一个调用的函数通过游戏。

现在,为了使它可维护/可修改,我希望将每张卡片的类作为数据库中的源代码,并在首次使用时对其进行基本编译。因此,当我必须添加/更改卡片时,我只需将其添加到数据库并告诉我的应用程序进行刷新,而无需任何程序集部署(特别是因为我们将讨论每张卡片 1 个程序集,这意味着数百个程序集) .

这可能吗?从源文件中注册一个类,然后实例化它等等。

ICard Cards[current] = new MyGame.CardLibrary.Card056();
Cards[current].OnEnterPlay(ref currentGameState);

语言是 C#,但如果可以用任何 .NET 语言编写脚本,则额外奖励。

最佳答案

Oleg Shilo's C# Script solution (at The Code Project ) 确实很好地介绍了如何在您的应用程序中提供脚本功能。

另一种方法是考虑一种专门为脚本编写的语言,例如 IronRuby , IronPython , 或 Lua .

IronPython 和 IronRuby 现已上市。

有关嵌入 IronPython 的指南,请阅读 How to embed IronPython script support in your existing app in 10 easy steps .

Lua 是游戏中常用的脚本语言。有一个用于 .NET 的 Lua 编译器,可从 CodePlex 获得 -- http://www.codeplex.com/Nua

如果您想了解如何在 .NET 中构建编译器,那么该代码库是一本很好的读物。

完全不同的角度是尝试PowerShell .有许多将 PowerShell 嵌入应用程序的示例——这里有一个关于该主题的完整项目: Powershell Tunnel

关于c# - 向 .NET 应用程序添加脚本功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/260/

相关文章:

.net - Node JS setInterval。 TypeError : Cannot read property 'apply' of undefined

c# - 是否有以中等信任度运行的 BinaryFormatter 替代方案

linux - 如何在 bash 中保存输入?

bash - bash shell 是否将 "fact=2"这样的赋值视为整数或长整型?

c# - 如何将日期插入 Open XML 工作表?

c# - 在多线程应用程序中查找/避免共享数据的规则

C# 字符串 - 简单语法问题

c# - 访问由另一个线程添加的字典项

.net - EF4 无法将具体类型转换为接口(interface)

linux - 我无法在终端上使用 sed 正确替换字符串