2010-09-03 16 views
6

supponga che ho il seguente codice:Aggiunta metodo statico per IronPython portata

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

In IronPython, desidero avere:

Bar() 

Senza dover includere Foo sulla linea. Ora, io so quello che posso dire:

var Bar = Foo.Bar 
Bar() 

Ma vorrei aggiungere Bar per lo ScriptScope nel mio codice C# utilizzando SetVariable. Come posso fare questo?

risposta

9

Creare delegato al metodo e impostare nell'ambito.

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

Funziona perfettamente. Ti consiglio il mio cofano. – Amy

Problemi correlati