この C# イベントを公開する DLL があります。
[Serializable]
public delegate object[] MyEventHandler(object[] data);
event MyEventHandler MyEvent;
それにサブスクライブするpythonコード:
...
def MyPythonEventHandler(source, args):
print 'Inside Event Handler'
...
ref.MyEvent += MyPythonEventHandler
...
DLL がイベントを発生させるとき、MyPythonEventHandler の print ステートメントには到達しません。代わりに、Python は ConversionException をスローします。例外はシリアル化できないため、DLL は実際に次の例外を受け取ります。
System.Runtime.Serialization.SerializationException: Type 'Python.Runtime.
ConversionException' in Assembly 'Python.Runtime, Version=2.0.0.2, Culture=neutral,
PublicKeyToken=null' is not marked as serializable.
したがって、どの変換が試行され、失敗しているのかを実際にはわかりません。
私はこの DLL からの他のイベント コールバックを正常に処理したので、この失敗はこの特定のイベントのデリゲート シグネチャに関係していると推測しています。Python ハンドラーの署名が間違っていますか?
ありがとう、ジム