Представление IronPython тип .NET к механизму исполнения

Я надеюсь выставлять определенные типы .NET времени выполнения IronPython. Я могу сделать это:

ScriptEngine engine = Python.CreateEngine();
ScriptScope scope = engine.CreateScope();
engine.Runtime.LoadAssembly(typeof(Program).Assembly); // current assembly with types

Но это выставляет все типы времени выполнения. Выборочный тип загружается возможный?

5
задан skaffman 5 February 2010 в 18:00
поделиться

2 ответа

Нет, вы должны загрузить всю сборку.

Внутреннее управление осуществляется с помощью ScriptDomainManager, который хранит только список загруженных сборок, а не их типы.

Лучшим вариантом будет сделать так, чтобы ваша сборка раскрывала публично только те типы, которые вам нужны в окружении Python, а остальные типы оставляла внутри.

2
ответ дан 14 December 2019 в 19:12
поделиться

На самом деле есть несколько параметров, но ни один из них не является автоматическим. Сначала вам нужно вызвать DynamicHelpers.GetPythonTypeFromType (typeof (TypeToInject)), чтобы получить объект PythonType, который действительно можно будет использовать. Затем вы можете либо:

  1. Ввести его в ScriptRuntime.Globals, и он будет доступен для импорта

  2. Вложить его в ScriptScope для некоторого кода, который вы собираетесь запустить

  3. Ввести его в PythonType.GetBuiltinModule (), и она будет доступна без импорта

3
ответ дан 14 December 2019 в 19:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: