2016-08-19 51 views
0

我有一些IronPython代碼,並im傳遞變量,並希望從python接收結果。我好不容易當我創建當前域的發動機得到IronPython的結果:如何在另一個AppDomain中運行代碼?我需要sandbox我的IronPython代碼

ScriptEngine pyEngine = IronPython.Hosting.Python.CreateEngine() 

那麼我只拿結果類似:

var result = this.pyScope.GetVariable("ObiektMS").code_1_1_1("II"); 

不過,我需要它的沙盒這樣的IM創造受權限限制的一個AppDomain和運行引擎在它:

ScriptEngine pyEngine = IronPython.Hosting.Python.CreateEngine(newDomain) 

但這一次,當我試圖讓結果在薩米方式我得到

An unhandled exception of type 'System.Runtime.Serialization.SerializationException' occurred in PythonTimeTests.exe 

是因爲我的「結果」變量在不同的域中,並且Ironpython的結果必須被序列化?

是否可以在新域中創建一個變量? 我想讓我的程序執行此操作:

1.從文件中讀取字典。

2.創建一個有限制的新域,並將字典傳遞給它。

3.Do通過從C#調用Python函數(所有限制結構域)

4.Return結果到非限制域在鐵蟒工作。

回答

1

是 - 跨域變量域之間的序列化,除非他們從MarshallByRefObject繼承如下解釋Sharing data between AppDomains

你的第二個問題是:「我能......做一些C#的東西」 - 是的;你可以在AppDomain中做任何你想做的事情。您只需遵循AppDomain數據傳輸規則,以便在AppDomain之間傳遞內容。

相關問題