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