如何创建可在IronPython中处理的C#事件处理程序?
请注意,我使用的是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出了什么问题?
答案 0 :(得分:3)
我明白了。
班级需要公开以及活动。
例如
public class Foo
{
...
public event EventHandler Bar;
}