Есть ли способ использовать объекты и функции Ironpython (скомпилированы в сборку) из C # код?

StackOverflow https://stackoverflow.com/questions/3795914

Вопрос

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

Это было полезно?

Решение

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

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

Другие советы

Я набираю это на моем телефоне, поэтому, пожалуйста, простите глупые ошибки. Чтобы использовать собранную сборку, убедитесь, что вы компилируете с CLR.comPileModules, а не PYCPY. Затем в вашем C # вызовите метод loadashty на своем объекте Python Scriptengine. Затем модуль может быть импортирован путем вызова метода ImportModule в вашем ScriptEngine. Оттуда, если вы можете воспользоваться преимуществами динамического ключевого слова, сделайте это. В противном случае вы будете застрять с тяжелыми призывами в Magic String для GetVariable. Также обратите внимание, что вам придется предоставить стандартную библиотеку на вашу сборку сборной Python в одной форме или другой.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top