Re[3]: вставка кода
От: Степанов Андрей  
Дата: 22.06.14 06:33
Оценка:
Здравствуйте, -rsdn-, Вы писали:

R>Здравствуйте, Степанов Андрей, Вы писали:


СА>>Здравствуйте, -rsdn-, Вы писали:


R>>>допустим пишу консольное приложение

R>>>хочу ввести код в консоли, скомпилировать его и выполнить, но сделать это в моей же консоли (с доступом к ее адресам, просто как вставку кода)
R>>>вроде так

R>>>
R>>>Main(){
R>>>var code = Console.ReadLine();

R>>>Execute(code);

R>>>ExecuteOtherCode()

R>>>}
R>>>

R>>>слышал про Emit из Reflection но это сложновато
R>>>Interception.LightInjectt, NUnity
R>>>вроде могут быть полезны, но хочется только .net стандартный использовать

СА>>Я в своё время (ещё на .net 1.1) делал так: делал сборку вызовом Microsoft.CSharp.Compiler.Compile, потом её загружал и использовал.

СА>>Наверняка сейчас это можно сделать проще, но как вариант — можно и так

R>так и делаю, но не понятно как в запущеной программе сделать вставку такого кода (из консоли). Emit — но я не сообразил пока как в него переобразовать код


Скомпилированную сборку надо загрузить (Assembly.Load, кажется), получить из неё тип и вызвать его метод через Reflection (GetType,Type.Invoke...). Потом, возможно, сборку надо выгрузить.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.