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

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

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

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

Мой класс C # выглядит так:

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 выглядит так:

def BarHandler(*args):
    pass

Foo.Bar += BarHandler

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

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

Ответы на вопрос(1)

Решение Вопроса

Я понял.

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

например

public class Foo
{
   ...   

    public event EventHandler Bar;
}

Ваш ответ на вопрос