Я надеюсь выставлять определенные типы .NET времени выполнения IronPython. Я могу сделать это:
ScriptEngine engine = Python.CreateEngine();
ScriptScope scope = engine.CreateScope();
engine.Runtime.LoadAssembly(typeof(Program).Assembly); // current assembly with types
Но это выставляет все типы времени выполнения. Выборочный тип загружается возможный?
Нет, вы должны загрузить всю сборку.
Внутреннее управление осуществляется с помощью ScriptDomainManager, который хранит только список загруженных сборок, а не их типы.
Лучшим вариантом будет сделать так, чтобы ваша сборка раскрывала публично только те типы, которые вам нужны в окружении Python, а остальные типы оставляла внутри.
На самом деле есть несколько параметров, но ни один из них не является автоматическим. Сначала вам нужно вызвать DynamicHelpers.GetPythonTypeFromType (typeof (TypeToInject)), чтобы получить объект PythonType, который действительно можно будет использовать. Затем вы можете либо:
Ввести его в ScriptRuntime.Globals, и он будет доступен для импорта
Вложить его в ScriptScope для некоторого кода, который вы собираетесь запустить
Ввести его в PythonType.GetBuiltinModule (), и она будет доступна без импорта