Мною задумно использование языка C# (впрочем, это не суть важно — подойдет любой язык из .NET) в качестве скриптового в приложении. Данный выход мне кажется удобным тем, что:
1. Не нужно писать компилятор/транслятор/интерпретатор — есть встроенные средства в .NET
2. Язык известен — его не надо изучать!
3. Прямая привязка к объектам в "воображаемом" мире, в котором и дейтсвуют скрипты
После некоторый раздумий я написал код, который обрамляет написанную на C# скрипт-функцию телом класса, т.е. скрипт начинает принадлежать определенному классу, у которого есть ссылка на другие объекты мира и т.п. Все работает "на ура" и очень быстро, но подумав еще немного, я увидел несколько проблем, связанных с этим подходом. Не подскажет ли уважаемый All, как это можно побороть?
Итак:
1. Каким образом мне ограничить скрипт-код так, чтобы он мог обращаться только к заранее заданному списку Namespace'ов и/или классов? Или скажу проще: как мне не дать скрипту использовать, например, System.IO для ликвидации потенциальной возможности работы с данными на жестком диске пользователя из скрипта? Думается мне, проверка кода скрипта на вхождение определенных символов и слов глупа — защитит только от "новичков".
2. Как мне отлаживать подобные приложения? Сколняюсь к мысли, что надо написать утилиту, которая будет каким-то образом сначала генерировать весь код в проект Microsoft Visual Studio, затем присоединять его к Solution с кодом самого большого проекта и все это запускать на отладку. Но такой метод очень громоздок и, признаться, я просто не уверен, что потяну его. Другие варианты?