2011-07-01 94 views
6

我知道我可以使用Lua Script文件来操作Java对象,使用类似LuaJava这样的库。我有这个想法,而不是使用C#脚本〜C#中的脚本编写

是否有可能在Java内部运行C#脚本?

+0

C#是不是一个真正的 “脚本” 语言。 – StriplingWarrior

+0

就这一点而言,严格来说,两者都不是Java。 Javascript是,Java不是,并没有“C#脚本”对应。 –

+2

@StriplingWarrior [当然是!](http://www.doolwind.com/blog/why-you-should-use-csharp-for-your-scripting-language/) – Justin

回答

6

理论上,是的 - 你当然可以在.Net应用程序中做到这一点,并有Java/.Net interops。

然而,通常情况下,Java/C#interop是通过P/Invoke或COM来执行的 - 两者对于这类事情都非常麻烦,所以实际上这可能不会像您想象的那样整齐。

所有相同的,如果你真的想这样做我可能会建议你在C#中编写“脚本引擎”(即围绕C#编译器的包装),然后通过interop将它暴露给Java land,例如:

public ScriptResult(string Script) 
{ 
    // Implemented in .Net 
    // Script is a string containing the C# code to execute 
} 

然后,您需要仔细考虑您的C#脚本是如何将能够访问任何Java的土地功能,再次我想最好的办法是实现一个.NET包装类通过interop调用Java对象。

使用C#作为从.NET应用程序中的脚本语言是出奇的简单 - 为信息,请参阅:

2

C#程序是“脚本”吗?无论如何,您可以通过Runtime.exec(...)运行大多数所有外部程序,但一定要注意陷阱:When Runtime.exec() won't

如果您希望在C#和Java之间进行双向通信,那么可以通过简单的套接字/流或直至COM接口完成双向通信。