首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >向.NET应用程序添加脚本功能

向.NET应用程序添加脚本功能
EN

Stack Overflow用户
提问于 2008-08-01 23:22:09
回答 8查看 20.9K关注 0票数 80

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

我的意思是,我实际上有一个接口,ICard,它是一个卡片类实现的(public class Card056: ICard),它包含一个由游戏调用的函数。

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

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

代码语言:javascript
复制
ICard Cards[current] = new MyGame.CardLibrary.Card056();
Cards[current].OnEnterPlay(ref currentGameState);

语言是C#,但如果可以用任何.NET语言编写脚本,这是额外的好处。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2008-08-02 01:49:46

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

一种不同的方法是考虑一种专门为脚本而构建的语言,例如IronRubyIronPythonLua

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

票数 42
EN

Stack Overflow用户

发布于 2008-08-02 04:18:16

您也许可以使用IronRuby来实现这一点。

否则,我建议你有一个存放预编译程序集的目录。然后,您可以在DB中拥有对程序集和类的引用,并使用反射在运行时加载适当的程序集。

如果你真的想在运行时编译,你可以使用CodeDOM,然后你可以使用反射来加载动态程序集。Microsoft documentation article which might help

票数 8
EN

Stack Overflow用户

发布于 2008-08-06 16:28:20

如果您不想使用DLR,您可以使用use Boo (which has an interpreter),也可以考虑使用the Script.NET (S#) project on CodePlex。使用Boo解决方案,您可以选择编译的脚本或使用解释器,Boo是一种很好的脚本语言,通过其开放的编译器体系结构具有灵活的语法和可扩展的语言。不过,Script.NET看起来也很不错,您可以很容易地扩展该语言以及它的开源项目,并使用一个非常友好的编译器生成器(Irony.net)。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/260

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档