2009-07-03 5 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; 
} 
関連する問題