Я использую скрипт Python с Pythonnet для управления библиотекой C #.Эта библиотека запускает методы делегата для определенных событий.Я регистрирую метод делегата, но он не вызывается.
Данный метод определен как event EventHandler<EventArgs> SystemInformationUpdated
Самое смешное, что другой метод с пользовательским классом возвращает значениеIS вызывается, определяется как event EventHandler<PeripheralDiscoveredEventArgs> PeripheralDiscovered
Когда я запускаю этот код с IronPython, все работает нормально, так что я думаю, что это проблема PythonNET.Мой код выглядит так:
from System import EventHandler, EventArgs
(...)
dc = EventHandler[PeripheralDiscoveredEventArgs](centralOnPeripheralDiscovered_callback)
central.PeripheralDiscovered += dc
iuc = EventHandler[EventArgs](systemInformationUpdated_callback)
central.SystemInformationUpdated += iuc
systemInformationUpdated_callback
- это NOT , выполняемый во время вызова функции centralOnPeripheralDiscovered_callback
.
Я также попробовал следующеекод:
from System import EventArgs
(...)
EventHandler = getattr(System, 'EventHandler`1')
dc = EventHandler[PeripheralDiscoveredEventArgs](centralOnPeripheralDiscovered_callback)
central.PeripheralDiscovered += dc
EventHandler = getattr(System, 'EventHandler`1')
iuc = EventHandler[EventArgs](systemInformationUpdated_callback)
central.SystemInformationUpdated += iuc
Это тоже не сработало (как я полагаю, ошибка была исправлена в PythonNET 2.2).
Используя консоль, я получаю
dc
<0, Culture=neutral, PublicKeyToken=null]]>
iuc
<0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]>
Свойство iuc
object Target имеет значение
Target <__System_EventHandler`1\[\[System_EventArgs\, mscorlib\, Version=4_0_0_0\, Culture=neutral\, PublicKeyToken=b77a5c561934e089\]\]Dispatcher> __System_EventHandler`1\[\[System_EventArgs\, mscorlib\, Version=4_0_0_0\, Culture=neutral\, PublicKeyToken=b77a5c561934e089\]\]Dispatcher
Я посмотрел Python для .NET readme: Использование Generics , Невозможно использовать Generics в CPython с Python.NET , Как я могу заставить дженерики работать в Python.NET с CPython
Среда:
- Python 3.6 64 бит,
- PythonNET2.3.0
- .NET Framework 4.5.2
- Windows 7 Enterprise 64 бит
Большое спасибо!