Como criar um manipulador de eventos C # que possa ser manipulado no IronPython?
Como criar um manipulador de eventos C # que possa ser manipulado no IronPython?
Observe que estou usando o IronPython 2.0.1. Eu sou capaz de manipular eventos de classes de sistema sem problemas (por exemplo, Window.KeyDown), mas quando eu tento definir meu próprio evento C #, uma exceção é levantada quando eu tento conectá-lo a partir do IronPython.
A exceção lançada é ArgumentTypeException e tem a mensagem "não é possível adicionar ao evento privado". A mensagem parece estranha, considerando que o evento que estou tentando ligar é público.
Minha classe c # se parece com isso:
class Foo
{
...
public event EventHandler Bar;
}
Meu código de configuração do IronPython é semelhante ao seguinte:
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.
Meu script IronPython é assim:
def BarHandler(*args):
pass
Foo.Bar += BarHandler
Alguém sabe se estou fazendo isso errado?
Ou há algo errado com o IronPython?