我有用于计算一些公式的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
});