Преобразования текста в команду - 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;
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д