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?