2016-08-19 7 views
0

IronPython 코드가 있고, 여기에 변수를 전달하고 파이썬에서 결과를 받고 싶습니다.다른 AppDomain에서 코드를 실행하는 방법은 무엇입니까? IronPython 코드를 샌드 박스해야합니다

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

그때 난 그냥 같은 결과를 가지고 : 나는 현재 도메인의 엔진을 만들 때 IronPython의의 결과를 얻을 수 있었다 그러나

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

을, 나는 그렇게 메신저 만들기 샌드 박스 필요 거기에 제한된 권한을 가진 응용 프로그램 도메인 및 실행 엔진 :

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

하지만 난

를 얻을 새미의 방법으로 결과를 얻으려고이 시간
An unhandled exception of type 'System.Runtime.Serialization.SerializationException' occurred in PythonTimeTests.exe 

"결과"변수가 다른 도메인에 있고 ironpython의 결과를 직렬화해야하기 때문에 그렇지 않습니까?

새 도메인에서 변수를 만들 수 있습니까? 내 프로그램에서 다음을 수행하겠습니다.

1. 파일에서 사전 읽기.

2. 제한이있는 새 도메인을 만들고 사전을 전달하십시오. (모든 제한 도메인)의 C#에서 무제한 도메인

4.Return 결과를 파이썬 함수를 호출하여 철 파이썬에서

3.Do 작동합니다.

답변

1

예 - 그들은 MarshallByRefObject에서 상속하지 않는 한 여기에 설명 된대로 크로스 도메인 변수는 도메인간에 직렬화 Sharing data between AppDomains

두 번째 질문은 "나는 ... 어떤 C#을 물건을 할 수있다"입니다 - 예; AppDomain에서 원하는 모든 작업을 수행 할 수 있습니다. AppDomain간에 물건을 전달하려면 AppDomain 데이터 전송 규칙을 따라야합니다.