Как создать обработчик событий C #, который можно обрабатывать в IronPython?

2

Как создать обработчик событий С#, который можно обрабатывать в IronPython?

Обратите внимание, что я использую IronPython 2.0.1. Я могу обрабатывать события из системных классов без проблем (например, Window.KeyDown), но когда я пытаюсь определить свое собственное событие С#, возникает исключение, когда я пытаюсь подключить его из IronPython.

Исключением является ArgumentTypeException, и оно имеет сообщение "не может добавить к частному событию". Сообщение кажется странным, учитывая, что событие, которое я пытаюсь подключить, является общедоступным.

Мой класс С# выглядит следующим образом:

class Foo
{
    ...

    public event EventHandler Bar;
}

Мой код установки IronPython выглядит следующим образом:

ScriptEngine engine = Python.CreateEngine();
ScriptRuntime runtime = engine.Runtime;
ScriptScope scope = runtime.CreateScope();
ScriptSource source = engine.CreateScriptSourceFromFile("Test.py");
Foo bar = new Foo();
scope.SetVariable("Foo", bar);
source.Execute(scope); <-- Exception is thrown here.

Мой IronPython script выглядит следующим образом:

def BarHandler(*args):
    pass

Foo.Bar += BarHandler

Кто-нибудь знает, если я делаю это неправильно?

Или что-то не так с IronPython?

Теги:
ironpython

1 ответ

3
Лучший ответ

Я понял это.

Класс должен быть общедоступным, а также событием.

например,

public class Foo
{
   ...   

    public event EventHandler Bar;
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню