Выполнить строку как исполняемый код в C# [дубликат]

173
19 марта 2018, 22:52

На данный вопрос уже ответили:

  • Выполнение кода из textbox 2 ответа

Есть строковые конструкции заранее неизвестно какие, но они могут быть любой сложности и длины следующего вида: ('abc' == 'abc' || 'xyz' == 'zyx') || ('abc' == 'dfg' && 'xyz' == 'zyx') Разнообразие сравнений данных и их количество (как и количество вложенных скобок) заранее не может быть известно, поэтому парсер на разбор вложенных скобок и математическое упрощение для меня совсем муторно и на очень долго затянется. Поэтому хочу узнать возможно ли все таки такую строку передать компилятору в виде кода и получить результат ее исполнения.

Answer 1

лучше не исполнять код из каких-то строк - можно подменить код и твое приложение его исполнит
сделай xml в которой будешь описывать свою структуру
например:

<or>
    <or>
        <equal>
            <string value="abc"/>
            <string value="abc"/>
        </equal>
        <equal>
            <string value="xyz"/>
            <string value="zyx"/>
        </equal>
    </or>
    <and>
        <equal>
            <string value="abc"/>
            <string value="dfg"/>
        </equal>
        <equal>
            <string value="xyz"/>
            <string value="zyx"/>
        </equal>
    </and>
</or>

для чего-то вроде этого намного легче написать обработчик и инъекции не допускает
нужно не забыть это:

  • операции сравнения возвращают тип bool
  • внутри операций сравнения должно быть ДВА ОДИНАКОВЫХ по типу значения
  • предусмотреть нужные типы данных и их парсинг из строки value

любое из нарушений - несоответствие формату (помимо банального нарушения формата xml)

READ ALSO
c# добавление кнопок в форму

c# добавление кнопок в форму

Есть форма она разделена на 2 частиВ левой создана кнопка

305
CodeDom Compiler подключение ссылки

CodeDom Compiler подключение ссылки

Как подключить ссылку к создаваемому приложению? К примеру SystemManagement

179
Проблемы с авторизацией VkNet

Проблемы с авторизацией VkNet

Сегодня начались проблемы с авторизацией, ранее всё работало, в чём причина ?

168
Связь ComboBox и TextBox в WPF

Связь ComboBox и TextBox в WPF

Есть ComboBox и несколько TextBox:

208