Это возможно с использованием пространств имен System.Reflection.Emit или System.CodeDom, но это не совсем хорошая идея, поскольку нет механизма для контроля того, что такое пространства имен и которые нельзя использовать.Вы пишете eval (), ожидая простых выражений, и следующее, что вы знаете, пользователь предъявляет вам иск, потому что ваш код позволил им ввести строку, которая стерла его жесткий диск.eval()
-подобные функции - это огромные дыры в безопасности, и их следует избегать.
Предпочтительной альтернативой в мире .Net является DSL (предметно-ориентированный язык) .Если вы заглянете в Google, вы можете найти несколько предварительно созданных DSL для общих задач, таких как арифметика.