Как создать обработчик событий С#, который можно обрабатывать в 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?
Я понял это.
Класс должен быть общедоступным, а также событием.
например,
public class Foo
{
...
public event EventHandler Bar;
}