В настоящее время я пишу некоторый код, и мне интересно, можно ли будет выполнить какой-нибудь код C # из моего приложения. Я дам вам идею, скажем, я хочу дать пользователю текстовое поле, чтобы он набрал какой-то код и нажал кнопку «Перейти», я хочу, чтобы он попросил список фруктов, а затем прошел каждый фрукт и вывел его… пример:
var fruitList = getFruit();
foreach(var fruit in fruitList)
{
print(fruit.Name);
}
Я хотел бы иметь возможность пройти через это и назначить список объектов Fruit для fruitList, парсер должен иметь возможность связать getFruit () с методом, который я написал в коде c #. То же самое касается печати, она должна быть приравнена к написанной мной функции печати, которая выводит ее в текстовое поле.
Теперь я знаю, что C # - это не скрипт, он компилируется, и я много занимался поиском, но ничего не могу найти. Мне кажется, что я могу написать небольшой синтаксический анализатор, что звучит забавно, но я делал это раньше и знаю, что это тяжелая работа. Так что это всего лишь предварительная проверка, чтобы увидеть, существует ли какое-то решение, прежде чем я отправлюсь в долгий путь.
Итак, мои коллеги-программисты, знаете ли вы что-нибудь, что может мне помочь?
Если нет, не проблема, я ценю все отзывы, будь то советы, рекомендации, ссылки на статьи, такие как http://blogs.msdn.com/b/ericwhite/archive/2010/06/29/writing-a-recursive-descent-parser-using-c-and-linq.aspx или решение.
С уважением,
Адам
РЕДАКТИРОВАТЬ: мне удалось получить рабочий пример. Обратите внимание, что этот код немного запутан, поскольку я вставил какой-то другой код в тестовое приложение, но он работает. По сути, я компилирую код в DLL, затем загружаю DLL, нахожу тип, нахожу метод и вызываю его. Это тоже чертовски быстро! Я не хочу спамить вас, поэтому полный код приведен ниже:
http://imdsm.blogspot.com/2012/01/compile-c-into-assembly-then-load-it.html
Спасибо всем, кто писал здесь. Вы только что спасли меня от путаницы!