Преобразования текста в команду - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Есть ли способ преобразовать текст, введенный в textBox, в команду? Например, textBox содержит "Math.Sin(2)", а при нажатии на кнопку должны получить синус двойки. Или в textBox будет this.close() - форма закрывается. Можно ли преобразовать текст в команду?

Решение задачи: «Преобразования текста в команду»

textual
Листинг программы
using System;
using System.CodeDom.Compiler;
using System.Windows.Forms;
using Microsoft.CSharp;
 
namespace WindowsFormsApplication280
{
    public partial class Form1 : Form
    {
 
        public Form1()
        {
            InitializeComponent();
 
            var tb = new TextBox {Parent = this, Dock = DockStyle.Top};
            tb.KeyPress += (o, e) =>
                               {
                                   if (e.KeyChar == '\r')
                                   {
                                       var res = new ExpressionCalcualtor().Calculate(tb.Text);
                                       tb.Text = res.ToString();
                                   }
                               };
        }
    }
 
    class ExpressionCalcualtor
    {
        public double Calculate(string expression)
        {
            string source = 
            @"
  using System;
 
  public static class Calculator
  {
    public static double Calc()
    {
      return %expression%;
    }
  }".Replace("%expression%", expression);
 
            // Настройки компиляции
            var compilerParams = new CompilerParameters {GenerateInMemory = true};
            // Компиляция
            var results = new CSharpCodeProvider().CompileAssemblyFromSource(compilerParams, source);
            //обработка ошибок
            if(results.Errors.Count > 0)
                throw new Exception(results.Errors[0].ErrorText);
            //вычисляем
            var calculator = results.CompiledAssembly.GetType("Calculator");
            var res = (double)calculator.GetMethod("Calc").Invoke(null, new object[0]);
 
            return res;
        }
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.889 из 5
Похожие ответы