2011-05-12 6 views
8

Je ne fais qu'examiner l'utilisation de IronPython avec C# et je n'arrive pas à trouver de documentation pour ce dont j'ai besoin. Fondamentalement, j'essaie d'appeler des méthodes à partir d'un fichier .py dans un programme C#.Incorporation de IronPython dans C#

Je donne les résultats suivants qui ouvre le module:

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

Mais, je ne suis pas sûr d'ici comment accéder à l'intérieur de la méthode là. L'exemple que j'ai vu utilise le mot-clé dynamique, cependant, au travail, je suis seulement sur C# 3.0.

Merci.

Répondre

9

Voir embedding sur le site vide.

Un exemple, The IronPython Calculator and the Evaluator fonctionne sur un simple évaluateur d'expression python appelé à partir d'un programme 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

Vous pouvez utiliser le code suivant,

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

Il est de this article.

Ou, si vous préférez appeler une méthode que vous pouvez utiliser quelque chose comme ça,

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

Cet exemple est de here.

Questions connexes