Jak utworzyć program obsługi zdarzeń C #, który może być obsługiwany w IronPython?

Jak utworzyć program obsługi zdarzeń C #, który może być obsługiwany w IronPython?

Zauważ, że używam IronPython 2.0.1. Jestem w stanie obsłużyć zdarzenia z klas systemowych bez żadnych problemów (np. Window.KeyDown), ale kiedy próbuję zdefiniować własne wydarzenie C #, pojawia się wyjątek, gdy próbuję go podłączyć z IronPythona.

Wyjątkiem jest ArgumentTypeException i komunikat „nie można dodać do zdarzenia prywatnego”. Wiadomość wydaje się dziwna, biorąc pod uwagę, że zdarzenie, które próbuję połączyć, jest publiczne.

Moja klasa C # wygląda tak:

class Foo
{
    ...

    public event EventHandler Bar;
}

Mój kod instalacyjny IronPythona wygląda tak:

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.

Mój skrypt IronPython wygląda tak:

def BarHandler(*args):
    pass

Foo.Bar += BarHandler

Czy ktoś wie, czy robię to źle?

A może coś jest nie tak z IronPythonem?

questionAnswers(1)

yourAnswerToTheQuestion