如何创建可在 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 出了什么问题?
我想到了。
课程和活动都需要公开。
eg
public class Foo
{
...
public event EventHandler Bar;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)