如何使用 .net 库类运行 java 脚本函数?



我有用于计算一些公式的JavaScript字符串,但我需要从C#执行脚本。

像JS公式字符串:

function(params) {
var itemAmount = 0,
itemsList = JSON.stringify(params.items),
billAmount = 0,
itemDiscountAmount = 0,
itemDiscountPercentage = 0,
maxDiscountAmount = 0, 
maxDiscountPercentage = params.maxDiscountPercentage;
return {
billAmount: billAmount,
maxDiscountPercentage: maxDiscountPercentage,
maxDiscountAmount: maxDiscountAmount
};
});

我需要传递参数并使用 C# 获得结果。

也许你正在寻找这样的JavaScript引擎:

var es = JsEngineSwitcher.Instance;
es.EngineFactories.AddChakraCore();
es.DefaultEngineName = ChakraCoreJsEngine.EngineName;
var je = es.CreateDefaultEngine();
je.EmbedHostType("console", typeof(Console));
je.Execute("console.WriteLine('HELLO CHAKRA')");

这应该适用于您的:

je.Execute("function foo(a,b,c){return a+b*c;};");
je.CallFunction<int>("foo", 1, 2, 3);

https://github.com/Taritsyn/JavaScriptEngineSwitcher

顺便说一句,如果您在代码中需要 JSON,这可能会有所帮助:

https://github.com/douglascrockford/JSON-js

JavaScript 示例没有使用大多数变量,并且与

function(params) {
return {
billAmount: 0,
maxDiscountPercentage: params.maxDiscountPercentage,
maxDiscountAmount: 0
};
});

这在C#中类似于匿名函数:

new Func<dynamic, dynamic>(params => new {
billAmount = 0,
maxDiscountPercentage = params.maxDiscountPercentage,
maxDiscountAmount = 0
});

最新更新