2009-07-03 48 views
2

如何創建一個可以在IronPython中處理的C#事件處理程序?如何創建一個可以在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出了問題?

回答

3

我想通了。

該課程需要公開以及事件。

public class Foo 
{ 
    ... 

    public event EventHandler Bar; 
} 
相關問題