代码之家  ›  专栏  ›  技术社区  ›  Ashley Davis

如何创建可以在Ironpython中处理的C事件处理程序?

  •  2
  • Ashley Davis  · 技术社区  · 15 年前

    如何创建可以在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出了什么问题?

    1 回复  |  直到 15 年前
        1
  •  3
  •   Ashley Davis    15 年前

    我知道了。

    该类既要公开,也要公开。

    public class Foo
    {
       ...   
    
        public event EventHandler Bar;
    }