AFAIK, нет единого общего метода для преобразования объектов DLR в их репрезентативные строковые представления.Это зависит от языка, и, к сожалению, они не реализованы одинаково.
По крайней мере с IronPython вы всегда можете просто получить ссылку на модуль Builtin, а затем вызвать функцию str()
(или repr()
) на вашемobjects.
var engine = Python.CreateEngine();
dynamic obj = engine.Execute("[1, 2, 3, 4, 5]");
dynamic builtin = engine.GetBuiltinModule();
string repr = builtin.str(obj);
Конечно, вы также можете вызывать функцию внутри скрипта.
string repr = (string)engine.Execute("str([1, 2, 3, 4, 5])");
Другой вариант - использовать одну из многих операций, определенных в пространстве имен IronPython.Runtime.Operations
..
string repr = IronPython.Runtime.Operations.PythonOps.ToString(obj);
Я не очень знаком с IronRuby, но вызов to_s()
для некоторых объектов иногда срабатывает.В противном случае он на самом деле возвращает объект .NET, где to_s
не существует и не очень надежен.Я думаю, что это проще сделать в скрипте.
var engine = Ruby.CreateEngine();
string repr = (string)engine.Execute("[1, 2, 3, 4, 5].to_s");
Возможно, вы захотите осмотреться и посмотреть, есть ли другие методы, которые вы могли бы использовать.