2011-07-01 133 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接口完成雙向通信。