2011-05-12 26 views
8

Estoy buscando utilizar IronPython con C# y parece que no puedo encontrar ninguna documentación excelente para lo que necesito. Básicamente estoy tratando de llamar a los métodos de un archivo .py en un programa C#.Incrustar IronPython en C#

que tienen los siguientes elementos que se abre el módulo:

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

Pero, no estoy seguro de aquí cómo obtener acceso al método allí dentro. El ejemplo que he visto utiliza la palabra clave dinámica, sin embargo, en el trabajo solo estoy en C# 3.0.

Gracias.

Respuesta

9

Consulte embedding en el sitio de Voidspace.

Un ejemplo allí, The IronPython Calculator and the Evaluator funciona sobre un simple evaluador de expresiones python llamado desde un programa 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

Usted puede intentar utilizar el código siguiente,

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

Es de this artículo.

O, si lo prefiere para invocar un método que puede utilizar algo como esto,

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); 
} 

Este ejemplo es de here.