Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
30 / 11 / 5
Регистрация: 01.03.2014
Сообщений: 379

Динамическая компиляция

17.09.2018, 14:39. Показов 2254. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день, форумчане.

Необходимо при создании экземпляра класса Template и передаче ему части кода, чтобы код компилировался и в переменную res возвращался результат выполнения этого кода.

Пример:
C#
1
2
            Template template = new Template("for (int i=0; i<5; i++){символьный вывод(*)};");
            var res = template .Run();
В res должно оказаться "*****".

Класс Template:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class Template
    {
        private string SourceString;
        private string output;
 
        public Template(string _sourceString)
        {
            SourceString = _sourceString;
        }
 
        public string Run()
        {
            output = "using System;" + " namespace ns  {class cl { static void Metod()" + " {" + SourceString + " } } }";
            return output;
        }
    }
Как я понимаю класс Template необходимо преобразовать в сборку (dll), а потом динамически компилировать?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.09.2018, 14:39
Ответы с готовыми решениями:

Динамическая компиляция
Добрый день. Подскажите пожалуйста ide для написания win32 на С#. Студии не нравятся. Читал что можно прямо в notepad++ компилировать....

Динамическая компиляция (без ехе)
Всем привет! Я использую след. код для компиляции &quot;кода на ходу&quot; string source = &quot;using System; public class FooClass { public string...

Динамическая компиляция приложений с визуальным интерфейсом
Часто видел разные примеры программной компиляции кода консольных приложений типа вот этого: using System; using...

3
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
17.09.2018, 14:45
holod2014, посмотрите вот эту тему: Динамическое создание кода, макроподстановка как FoxPro
1
30 / 11 / 5
Регистрация: 01.03.2014
Сообщений: 379
17.09.2018, 17:12  [ТС]
Ознакомился с ссылкой. Спасибо.
А как получить значение переменной (output) из динамически компилируемого метода?

Например:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using System;
 
namespace First
{
    public class Program
    {
        public static void Main()
        {
            string output = null;
            for (int i = 0; i < (2 * 3); i++)
            {
                output = Convert.ToString(1);
            }
        }
    }
}
Собираюсь писать модульные тесты. Необходима переменная, которая будет возвращать значение класса.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
17.09.2018, 17:51
Лучший ответ Сообщение было отмечено holod2014 как решение

Решение

Цитата Сообщение от holod2014 Посмотреть сообщение
А как получить значение переменной (output) из динамически компилируемого метода?
В примере по ссылке компилируемый метод Execute возвращает значение типа double.
При компиляции создается делегат и дальше вызывается как обычный метод.
Пример вызова и получения значения — в строке 18.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.09.2018, 17:51
Помогаю со студенческими работами здесь

Динамическая компиляция плагинов и доступ к родительскому приложению
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using...

Динамическая компиляция и внедрение полученного кода в приложение
В приложении потребовались макросы. Мне подходит синтаксис C#, поэтому хочу использовать динамическую компиляцию. Вопрос по интеграции...

Выполнение кода, написанного в RichTextBox (Динамическая компиляция)
Всем добра. Итак, вышла задача, что пользователь в richtextbox вводит код (об этом потом подробнее), и этот код должен встать в тело...

Динамическая компиляция файла с кодом в собственном приложении
Есть свое приложение и часть кода в .txt файле. В моей программе определяются некие переменные типа Var1, Var2 etc и в текстовом файле...

Исполнение кода, написанного в текстовом файле (динамическая компиляция кода)
к примеру есть у меня форма а на ней кнопка, можно ли присваивать код кнопке с текстового файла? пример в текстовике: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru