В вашем примере test
- это строка JavaScript, в которой нет метода StartsWith
. Даже если бы он был возвращен из .NET, для удобства он был бы преобразован в строку JavaScript.
Вы можете добавить метод, который преобразует строку JavaScript в строку .NET:
engine.AddHostObject("host", new HostFunctions());
engine.Execute(@"
String.prototype.toHost = function() {
return host.newVar(this.valueOf());
}
");
И тогда это должно работать:
engine.AddHostType(typeof(Console));
engine.Execute(@"
test = 'variable';
Console.WriteLine(test.toHost().StartsWith('var'));
Console.WriteLine(test.toHost().StartsWith('vaz'));
");
Кстати, будьте осторожны с этим:
engine.AddHostType("String", typeof(System.String));
Это скрывает встроенную функцию JavaScript String
и может привести к поломке.