Вопрос по vb.net, c#, .net, reflection – C # Как добавить код для выполнения во время выполнения
Я знаю, что многим из вас это требование может показаться утомленным, но это одно из требований моего проекта. Можно ли добавить код в Sp и выполнить в .Net exe. Как и при нажатии кнопки, я вызываю один SP, который возвращает несколько строк кода, а затем программа выполняет код.
Возможно ли, если да, то как?
Я использую фреймворк 1.1
Другая возможность:
Используя некоторый двоичный тип данных, такой какvarbinary
в вашей базе данных вы можете хранить сборки в таблице в виде двоичных данных. Затем вы можете прочитать эти двоичные данные из базы данных, сохранить их локально, загрузить сборку черезAssembly.LoadFrom()
, а затем используйте отражение, чтобы найти какой-то особый тип или точку входа, которую вы могли бы использовать.
Вы, вероятно, хотите DLR (где D означает Dynamic), к сожалению, это .NET 4.0 и выше.
Похоже, вы в ужасном наследственном коде преисподней; скорее ты, чем я.
Вы можете создать свой собственный язык сценариев для запуска в вашем приложении, но он будет медленным и не идеальным. Нечто похожее на YACC могло бы помочь вам в этом, но это непростая поездка (видела, как кто-то пробовал такое поведение в Java).
Если вы говорите о компиляции TSQL в таблицу и последующем запуске этого TSQL через C #, да, это возможно. Что вам нужно сделать, это написать простой парсер для файлов сценариев TSQL (.sql). Парсер будет читать сценарий SQL и на каждомGO
оператор, добавьте оператор TSQL в соответствующую таблицу SQL Server (таблица может иметь два столбца 1. База данных для запуска / имя процесса для выполнения. 2. Сам запрос.). Затем вы можете выполнять эти блоки TSQL динамически во время выполнения.
Если вы говорите о запуске C #, который был скомпилирован в таблицу данных SQL Server, это другая игра с мячом, и я не знаю простого способа сделать это (это вообще возможно).
Надеюсь, это поможет.
Искал "динамическое выполнение кода C #" и Google придумал этот блог с 2002 года ... Это может работать для вас ..
http://www.west-wind.com/presentations/dynamiccode/dynamiccode.htm
Статья относится кSystem.CodeDom.Compiler скомпилировать сборку на лету, а затем использовать Reflection для выполнения этого кода. Звучит забавно ;)
РЕДАКТИРОВАТЬ: Как DaveL предложил:Можно ли динамически компилировать и выполнять фрагменты кода C #?