Jint如何获取JavaScript函数作为参数传递给字符串toString

时间:2019-06-13 19:06:22

标签: javascript c# tostring jint

我已经用这个问题搜索了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引擎解析其代码):

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(),但仍然无法正常工作如预期的那样-我希望能够获得与实际JavaScript函数上调用.toString()相同的结果,但是使用C#。

在Jint中必须有某种内置的方式来访问与特定JsValue相关的原始JavaScript方法,而不是仅仅被迫使用新的C#值?这意味着如何调用Jint对象的原始JavaScript方法?

很显然,如果我知道该函数的名称,即如果事先声明该函数,则可以执行以下操作:

var funcString = engine.GetValue("myFunction.toString()");

但是我希望能够将函数的toString传递给C#函数/类。

SO:

如何通过从JavaScript到C#的C#函数参数传递给字符串(如.toString()(小写的“ t”)一样)的JavaScript函数,方法是将C#函数参数传递给方法(或类定义) ,通过Jint?

0 个答案:

没有答案