Есть ли способ использовать объекты и функции IronPython (скомпилированные в сборку) из кода C #? - PullRequest
1 голос
/ 26 сентября 2010

В документации IronPython.net говорится, что MSIL в сборке не совместим с CLS, но есть ли обходной путь?

Ответы [ 2 ]

1 голос
/ 26 сентября 2010

Это было частично мотивом для добавления типа dynamic в C # 4.0. Самая большая проблема заключается в том, что объявления IronPython не содержат информацию о типе, что затрудняет использование ее из C #. Ключевое слово dynamic добавляет поддержку таких динамически типизированных объектов в C # 4.0. См. Например:

Вызов функций / объектов из C # 3.0 немного раздражает, но это все же возможно Вам просто нужно написать что-то вроде foo.Invoke("Bar", 42) вместо того, чтобы просто писать foo.Bar(42).

0 голосов
/ 01 октября 2010

Я набираю это на своем телефоне, поэтому, пожалуйста, прости любые глупые ошибки.Чтобы использовать скомпилированную сборку, убедитесь, что вы компилируете с clr.CompileModules, а не с pyc.py.Затем в вашем C # вызовите метод LoadAssembly для вашего объекта Python ScriptEngine.Затем модуль можно импортировать, вызвав метод ImportModule на вашем ScriptEngine.Оттуда, если вы можете воспользоваться динамическим ключевым словом, сделайте это.В противном случае вы застрянете с некоторыми тяжелыми магическими вызовами GetVariable.Также обратите внимание, что вам нужно будет предоставить стандартную библиотеку для вашей скомпилированной сборки Python в той или иной форме.

...