Wie erstelle ich einen C # -Ereignishandler, der in IronPython verarbeitet werden kann?

Wie erstelle ich einen C # -Ereignishandler, der in IronPython verarbeitet werden kann?

Beachten Sie, dass ich IronPython 2.0.1 verwende. Ich kann problemlos Ereignisse aus Systemklassen verarbeiten (z. B. Window.KeyDown). Wenn ich jedoch versuche, mein eigenes C # -Ereignis zu definieren, wird eine Ausnahme ausgelöst, wenn ich versuche, es von IronPython aus zu verknüpfen.

Die Ausnahmebedingung lautet ArgumentTypeException und hat die Meldung "Kann nicht zu privatem Ereignis hinzufügen". Die Nachricht erscheint seltsam, wenn man bedenkt, dass das Ereignis, an dem ich mich beteilige, öffentlich ist.

Meine C # -Klasse sieht folgendermaßen aus:

class Foo
{
    ...

    public event EventHandler Bar;
}

Mein IronPython-Setup-Code sieht folgendermaßen aus:

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.

Mein IronPython-Skript sieht folgendermaßen aus:

def BarHandler(*args):
    pass

Foo.Bar += BarHandler

Weiß jemand, ob ich das falsch mache?

Oder stimmt etwas mit IronPython nicht?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage