Я знаю, что вы можете динамически создавать сборку .NET, используя Emit, System.Reflection и IL-код, созданный вручную, как показано здесь .
Но мне было интересно, возможно ли динамически создавать и выполнять блок кода C # в реальном времени в работающем приложении. Спасибо за любой вклад или идеи.
Edit:
Как я понимаю, CodeDOM позволяет вам компилировать код C # в файл EXE, а не просто выполнять его. Вот некоторая справочная информация и почему (насколько я могу судить) это не лучший вариант для меня. Я создаю приложение, которое должно будет выполнять такой динамически создаваемый код довольно много [для протокола - это для академических исследований, а не для реального приложения, поэтому этого нельзя избежать]. Следовательно, создание / выполнение тысяч динамически создаваемых EXE-файлов не очень эффективно. Во-вторых, все фрагменты динамического кода возвращают некоторые данные, которые трудно прочитать из отдельно запущенного EXE-файла. Пожалуйста, дайте мне знать, если я что-то упустил.
Что касается подхода DynamicMethod, на который указал Jon Skeet , все работало бы как обаяние, если бы существовал более простой способ написания самого кода, а не низкоуровневого кода IL.
Другими словами (очень резко) Мне нужно что-то вроде этого:
string x = "_some c# code here_";
var result = Exec(x);