Вопрос по vb.net, c#, .net, reflection – C # Как добавить код для выполнения во время выполнения

2

Я знаю, что многим из вас это требование может показаться утомленным, но это одно из требований моего проекта. Можно ли добавить код в Sp и выполнить в .Net exe. Как и при нажатии кнопки, я вызываю один SP, который возвращает несколько строк кода, а затем программа выполняет код.

Возможно ли, если да, то как?

Я использую фреймворк 1.1

Во-первых, .NET Framework 1.1, что за двойка, рассмотрите более актуальную версию. Во-вторых, попытка запустить динамические оценки из кода, извлеченного из хранимой процедуры базы данных, звучит как странный способ развития вашего бизнеса. Не могли бы вы объяснить, почему вы пытаетесь это сделать? Jeff Watkins
попробуйте здесь - возможно, связано сstackoverflow.com/questions/826398/… Dave Lawrence
@Jeff Система является устаревшей системой, и клиент не хочет обновлять ее до новых платформ, у него есть свои причины для этого. Во-вторых, это приложение клиент-сервер. Если мы получим какую-либо ошибку в клиентском приложении, нам нужно перераспределить ее на более чем 1500 мест, поэтому, если мы сможем выполнить код во время выполнения, он может когда-нибудь спасти Deepesh
+1 Спасибо @daveL за то, что я искал Deepesh

Ваш Ответ

4   ответа
1

Другая возможность:

Используя некоторый двоичный тип данных, такой какvarbinary в вашей базе данных вы можете хранить сборки в таблице в виде двоичных данных. Затем вы можете прочитать эти двоичные данные из базы данных, сохранить их локально, загрузить сборку черезAssembly.LoadFrom(), а затем используйте отражение, чтобы найти какой-то особый тип или точку входа, которую вы могли бы использовать.

+1 за предложение Deepesh
0

Вы, вероятно, хотите DLR (где D означает Dynamic), к сожалению, это .NET 4.0 и выше.

Похоже, вы в ужасном наследственном коде преисподней; скорее ты, чем я.

Вы можете создать свой собственный язык сценариев для запуска в вашем приложении, но он будет медленным и не идеальным. Нечто похожее на YACC могло бы помочь вам в этом, но это непростая поездка (видела, как кто-то пробовал такое поведение в Java).

Я знал о DLR, поэтому я упомянул FrameWork в своем Вопросе Deepesh
1

Если вы говорите о компиляции TSQL в таблицу и последующем запуске этого TSQL через C #, да, это возможно. Что вам нужно сделать, это написать простой парсер для файлов сценариев TSQL (.sql). Парсер будет читать сценарий SQL и на каждомGO оператор, добавьте оператор TSQL в соответствующую таблицу SQL Server (таблица может иметь два столбца 1. База данных для запуска / имя процесса для выполнения. 2. Сам запрос.). Затем вы можете выполнять эти блоки TSQL динамически во время выполнения.

Если вы говорите о запуске C #, который был скомпилирован в таблицу данных SQL Server, это другая игра с мячом, и я не знаю простого способа сделать это (это вообще возможно).

Надеюсь, это поможет.

Я говорю о C #. Как у меня есть метод и конец этого метода, я хочу добавить дополнительный код, который зависит от времени выполнения. Этот код будет сохранен в базе данных, а затем мы его выполним. Deepesh
Хорошо, запутанный маршрут. Вы можете создать плагинную архитектуру со сборками по определенному шаблону и опубликованному интерфейсу. Динамически загружать сборки из базы данных в виде двоичных объектов и выполнять их в соответствии с интерфейсом, который вы определили. Это не красиво, но это будет работать.
3

Искал "динамическое выполнение кода C #" и Google придумал этот блог с 2002 года ... Это может работать для вас ..

http://www.west-wind.com/presentations/dynamiccode/dynamiccode.htm

Статья относится кSystem.CodeDom.Compiler скомпилировать сборку на лету, а затем использовать Reflection для выполнения этого кода. Звучит забавно ;)

РЕДАКТИРОВАТЬ: Как DaveL предложил:Можно ли динамически компилировать и выполнять фрагменты кода C #?

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