Добавление статического метода в область IronPython - PullRequest
6 голосов
/ 03 сентября 2010

Предположим, у меня есть следующий код:

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

В IronPython я хотел бы иметь:

Bar()

Без необходимости включать Foo в строку.Теперь я знаю, что могу сказать:

var Bar = Foo.Bar
Bar()

Но я бы хотел добавить Bar в ScriptScope в моем коде C # с помощью SetVariable.Как я могу это сделать?

1 Ответ

9 голосов
/ 03 сентября 2010

Создать делегата для метода и установить в область.

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