Как запустить функции сценариев Java с использованием класса библиотеки .net? - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть строка 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 #.

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

В примере 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
});
0 голосов
/ 01 октября 2018

Может быть, вы ищете движок 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

BTW,если вам нужен JSON в вашем коде, это может помочь:

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

...