2015-09-14 19 views
2

我打算將IronPython與C#一起用於以下用例。如何從python腳本與C#暴露的界面進行通信?

我想公開一些可以通過python腳本調用的函數。

這樣的腳本將被C#應用程序調用。

例如,可以在C#ClearUserInput()中準備函數來清除WPF上的一些數據。然後我可以通過一些接口暴露更多的功能。

public interface IScriptContract 
{ 
    void ClearMainWindow(); 
    void LoadProject(string projectName); 
} 

python腳本:

print "clearing window" 
ClearMainWindow() --how to cooperating with C# code? 
print "load proj" 
ClearMainWindow("project.proj") --how to cooperating with C# code? 

我想用戶可以編寫一些腳本,可以調用我的。NET功能。

有沒有可能這樣做?

+0

看到這裏 - http://stackoverflow.com /問題/ 7367976 /調用-AC鋒利庫從 - 蟒蛇 – Evk

回答

1

執行此操作的標準方法是創建一個「主機對象」,該主體對象被傳遞到提供對主機應用程序的訪問的腳本中(如果您熟悉Web編程,那就是window實例)。

IronPython中您可以使用ScriptScope對象正在執行你的代碼上SetVariable

var contract = new ScriptContract(); 

var engine = Python.CreateEngine(); 
var mainScope = engine.CreateScope(); 

var scriptSource = engine.CreateScriptSourceFromFile("test.py", Encoding.Default, SourceCodeKind.File) 

mainScope.SetVariable("host", contract); 

scriptSource.Execute(scope); 

從蟒蛇它然後總是可用:

host.ClearMainWindow() 
相關問題