Я искал в Google этот вопрос, и все, что я могу найти, это различные вопросы о том, как вызвать функцию в Jint и т. Д., Но я не смог найти ответов на вопрос о том, как получить функцию JavaScript в виде строки.в Jint.
Например, скажем, у меня есть следующая функция C # в классе:
public static string StringifyJsFunction(Func<JsValue, JsValue[], JsValue> /*or possible just JsValue as the type, not sure if that would be easier*/ inputFunction) {
return somehowTurnFunctionIntoJsString(inputFunction);
}
, а затем на стороне JavaScript (чей код должен быть проанализирован с помощью Jint Engine):
importNamespace("something").SomeClass.StringifyJsFunction(function() {
console.log("hi");
/*other JavaScript code */
});
, а затем теоретически это должно вернуть строку ( из метода C #):
`
function() {
console.log("hi");
/*other JavaScript code */
}
`
, очевидно, на самой стороне JavaScript я могу просто вызвать (function () {}). toString (), но я хочу получить строку на стороне C # для хранения в базе данных и по другим причинам и т. д. ...
, очевидно, что текущий аргумент имеет видтипа Func (который является типом по умолчанию, автоматически конвертируемым из Jint и передаваемым в функцию C #), я не думаю, что можно просто вызвать .toString () (в нижнем регистре «to»), чтобы получить код функции JavaScript, так какэто яТеперь это функция C #, но, может быть, если бы это было JsValue, я мог бы вызвать inputFunction.Get ("toString"). Call (), но все же это не совсем работает, как и ожидалось - я хочу иметь возможность получитьтот же результат, как если бы я вызывал .toString () для фактической функции JavaScript, но в C #.
В Jint должен быть какой-то встроенный способ доступа к исходным методам JavaScript, связанным с конкретным JsValue,в отличие от просто вынуждены работать с новым значением C #?Имеется в виду, как я могу вызвать оригинальные методы JavaScript объекта Jint?
Очевидно, также, если бы я знал имя функции, то есть если она была объявлена заранее, то я мог бы сделать что-то вроде:
var funcString = engine.GetValue("myFunction.toString()");
но я хочу иметь возможность получить toString функции при ее передаче в функцию / класс C #.
SO:
Как я могуполучить функцию JavaScript в виде строки (как в .toString () (строчная буква «t») через аргумент функции C #, переданный в метод (или определение класса), из JavaScript в C # через Jint?