Пример #1
0
        public async Task EvalTest()
        {
            var result = await _scriptEngine.Eval("1+1", new NScriptOptions());

            Assert.Equal(2, result);

            result = await _scriptEngine.Eval("\"Hello \" + \"NatashaPad\"", new NScriptOptions());

            Assert.Equal("Hello NatashaPad", result);

            result = await _scriptEngine.Eval("DateTime.Today.ToString(\"yyyyMMdd\")", new NScriptOptions());

            Assert.Equal(DateTime.Today.ToString("yyyyMMdd"), result);
        }
Пример #2
0
        private async void BtnRun_OnClick(object sender, RoutedEventArgs e)
        {
            var input = txtInput.Text?.Trim();

            if (string.IsNullOrEmpty(input))
            {
                return;
            }
            txtOutput.Text = string.Empty;

            try
            {
                if (input.Contains("static void Main(") || input.EndsWith(";"))
                {
                    // statements, execute
                    await _scriptEngine.Execute(input, _scriptOptions);
                }
                else
                {
                    // expression, eval
                    var result = await _scriptEngine.Eval(txtInput.Text, _scriptOptions);

                    if (null == result)
                    {
                        txtOutput.AppendText("(null)");
                    }
                    else
                    {
                        var dumpedResult = _dumperResolver.Resolve(result.GetType())
                                           .Dump(result);
                        txtOutput.AppendText(dumpedResult);
                    }
                }
            }
            catch (Exception exception)
            {
                MessageBox.Show(exception.Message, "执行发生异常");
            }
        }