Я могу скомпилировать и выполнить выражение C#, не сохраняя блок на диск?

Я могу скомпилировать, получить экземпляр и вызвать метод любого типа C# программно. Там много информации об этом, включая StackOverflow (Как я могу оценить выражение C# динамично?). Моя проблема состоит в том, что я нахожусь в веб-среде и ничего не могу сохранить к / каталогу bin. Я могу скомпилировать "в оперативной памяти", как вышеупомянутая ссылка предполагает, но затем я не смогу "разгрузить" свой пользовательский блок от текущего AppDomain. Через некоторое время это станет огромной проблемой памяти. Действительно ли возможно открыть новый AppDomain, скомпилировать новый блок, "в оперативной памяти", оценить некоторое выражение или доступ некоторый участник того блока в том новом AppDomain и уничтожить тот AppDomain безопасно при выполнении, все это, ничего не сохраняя к жесткому диску? Заранее спасибо за любые ссылки, предложения, и т.д.

6
задан Community 23 May 2017 в 12:01
поделиться

2 ответа

Вы посмотрели на тип DynamicMethod в .Net? Этот тип создает методы с поддержкой сборки мусора в памяти, используя Reflection.Emit. Это похоже именно на то, что вы ищете.

2
ответ дан 17 December 2019 в 18:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: