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

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

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

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

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

textual
Листинг программы
  1. using System;
  2. using System.CodeDom.Compiler;
  3. using System.Windows.Forms;
  4. using Microsoft.CSharp;
  5.  
  6. namespace WindowsFormsApplication280
  7. {
  8.     public partial class Form1 : Form
  9.     {
  10.  
  11.         public Form1()
  12.         {
  13.             InitializeComponent();
  14.  
  15.             var tb = new TextBox {Parent = this, Dock = DockStyle.Top};
  16.             tb.KeyPress += (o, e) =>
  17.                                {
  18.                                    if (e.KeyChar == '\r')
  19.                                    {
  20.                                        var res = new ExpressionCalcualtor().Calculate(tb.Text);
  21.                                        tb.Text = res.ToString();
  22.                                    }
  23.                                };
  24.         }
  25.     }
  26.  
  27.     class ExpressionCalcualtor
  28.     {
  29.         public double Calculate(string expression)
  30.         {
  31.             string source =
  32.             @"
  33.  using System;
  34.  
  35.  public static class Calculator
  36.  {
  37.    public static double Calc()
  38.    {
  39.      return %expression%;
  40.    }
  41.  }".Replace("%expression%", expression);
  42.  
  43.             // Настройки компиляции
  44.             var compilerParams = new CompilerParameters {GenerateInMemory = true};
  45.             // Компиляция
  46.             var results = new CSharpCodeProvider().CompileAssemblyFromSource(compilerParams, source);
  47.             //обработка ошибок
  48.             if(results.Errors.Count > 0)
  49.                 throw new Exception(results.Errors[0].ErrorText);
  50.             //вычисляем
  51.             var calculator = results.CompiledAssembly.GetType("Calculator");
  52.             var res = (double)calculator.GetMethod("Calc").Invoke(null, new object[0]);
  53.  
  54.             return res;
  55.         }
  56.     }
  57. }

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


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

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

9   голосов , оценка 3.889 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы