Вы можете разместить IronPython в своем приложении C #.Затем вы можете передать переменные из вашего приложения на C # и выполнить код IronPython, который их использует.Дино Виланд выступил на PDC с докладом об этом, который называется Использование динамических языков для создания приложений с поддержкой скриптов .Дино сделал исходный код для приложения, созданного им на PDC, доступным, но он использует более старую версию IronPython.
Вот код для IronPython 2.7.1, который показывает, как выможет разместить IronPython в нескольких строках кода.
using System;
using IronPython.Hosting;
using Microsoft.Scripting.Hosting;
public class MyIronPythonHost
{
ScriptEngine scriptEngine;
ScriptScope scriptScope;
public void Initialize(MyApplication myApplication)
{
scriptEngine = Python.CreateEngine();
scriptScope = scriptEngine.CreateScope();
scriptScope.SetVariable("app", myApplication);
}
public void RunPythonCode(string code)
{
ScriptSource scriptSource = scriptEngine.CreateScriptSourceFromString(code);
scriptSource.Execute(scriptScope);
}
}
Приведенный выше код передает объект приложения с именем MyApplication в IronPython через область действия скрипта и задает имя его переменной app .Эта переменная app затем становится доступной для кода IronPython, где она может вызывать методы, обращаться к свойствам и т. Д.
Последний метод в приведенном выше коде - это метод RunPythonCode, который принимаетКод IronPython, написанный пользователем и выполняющий его.
Если пойти дальше этого и позволить пользователю отлаживать свой код IronPython аналогично тому, как вы можете отлаживать макросы VBA, является важной частью разработки.