ScriptEngine rubyEngine;
//...
dynamic execution_result = rubyEngine.Execute(script, scope);
if (execution_result != null && !silent)
WriteResponce(execution_result.ToString());
Этот код генерирует InvalidCastException:
Невозможно привести объект типа «SOMELIB.Graphics» к типу «SOMELIB.Object».
Когда происходит сравнение:
результат_выполнения != ноль
Если это сравнение удалено, то execute_result.ToString() выдает такое же исключение.
Я нашел обходной путь:
if (execution_result is SOMELIB.Graphics)
{
SOMELIB.Graphics g = execution_result as SOMELIB.Graphics;
WriteResponce(g.ToString());
return;
}
но я не понимаю, почему появляется это исключение и как его исправить.