2010-09-03 30 views
6

asume que el siguiente código:Adición método estático para IronPython alcance

public static class Foo 
{ 
    public static void Bar() {} 
} 

En IronPython, me gustaría tener:

Bar() 

sin tener que incluir el Foo en la línea. Ahora, sé lo que puedo decir:

var Bar = Foo.Bar 
Bar() 

Pero me gustaría añadir a la barra de ScriptScope en mi código C# usando SetVariable. ¿Cómo puedo hacer esto?

Respuesta

9

Crear delegado en el método y establecerlo en el alcance.

public class Program 
{ 
    public static void Main(string[] args) 
    { 
     var python = Python.CreateEngine(); 
     var scriptScope = python.CreateScope(); 
     scriptScope.SetVariable("Print", new Action<int>(Bar.Print)); 

     python.Execute(
      "Print(10)", 
      scriptScope 
      ); 
    } 

} 

public static class Bar 
{ 
    public static void Print(int a) 
    { 
     Console.WriteLine("Print:{0}", a); 
    } 
} 
+0

Funciona perfectamente. Te ofrezco mi gorro. – Amy

Cuestiones relacionadas