Доброго, может ли кто привести пример доступа из скрипта к экземпляру класса, из которого выполняется сам скрипт. Нужно изменять в скрипте свойства экземпляра класса для настройки параметров. Хотелось бы что-нить без статических полей, если возможно. Может быть есть какой-то специальный механизм?
Вот так вызываю скрипт в виде строки:
using IronPython.Hosting;
using IronPython.Runtime;
using Microsoft.Scripting;
using Microsoft.Scripting.Hosting;
private void RunScript( XYPlot xyplot ) {
ScriptEngine engine;
ScriptRuntime runtime;
ScriptSource source = null;
try {
XYPlot.xyplot = xyplot.canv;
engine = Python.CreateEngine();
runtime = engine.Runtime;
runtime.LoadAssembly( System.Reflection.Assembly.GetExecutingAssembly() );
source = engine.CreateScriptSourceFromString( base.canv.Script, SourceCodeKind.AutoDetect );
ScriptScope scope = runtime.CreateScope();
CompiledCode compil = source.Compile();
// Выполняем скрипт.
compil.Execute( scope );
} catch {}
}
XYPlot.xyplot = xyplot.canv; — это использование статического поля, которое будет доступно в скрипте. Делаю по аналогии со
статьёй на хабре, где использовалось статическое поле для доступа к экземпляру. Я не спец по python и IronPython и потому хотелось бы посмотреть на примеры использования скриптов для управления свойствами экземпляра класса.