2011-05-12 82 views
8

我只是尋找與C#使用IronPython,似乎無法找到我需要的任何偉大的文檔。基本上我試圖從.py文件調用方法到C#程序中。在C#中嵌入IronPython#

我有這將打開模塊如下:

var ipy = Python.CreateRuntime(); 
var test = ipy.UseFile("C:\\Users\\ktrg317\\Desktop\\Test.py"); 

不過,我不確定從這裏如何獲得訪問方法在裏面。我見過的例子使用動態關鍵字,但是,在工作中我只使用C#3.0。

謝謝。

回答

9

請參閱Voidspace站點上的embedding

那裏有一個例子,The IronPython Calculator and the Evaluator 可以通過一個簡單的Python表達式求值程序來調用C#程序。

public string calculate(string input) 
{ 
    try 
    { 
     ScriptSource source = 
      engine.CreateScriptSourceFromString(input, 
       SourceCodeKind.Expression); 

     object result = source.Execute(scope); 
     return result.ToString(); 
    } 
    catch (Exception ex) 
    { 
     return "Error"; 
    } 
} 
6

您可以嘗試使用下面的代碼,

ScriptSource script; 
script = eng.CreateScriptSourceFromFile(path); 
CompiledCode code = script.Compile(); 
ScriptScope scope = engine.CreateScope(); 
code.Execute(scope); 

這是一個從this文章。

或者,如果你喜歡調用,您可以使用這樣的方法,

using (IronPython.Hosting.PythonEngine engine = new IronPython.Hosting.PythonEngine()) 
{ 
    engine.Execute(@" 
    def foo(a, b): 
    return a+b*2"); 

    // (1) Retrieve the function 
    IronPython.Runtime.Calls.ICallable foo = (IronPython.Runtime.Calls.ICallable)engine.Evaluate("foo"); 

    // (2) Apply function 
    object result = foo.Call(3, 25); 
} 

這個例子來自here