| « Поставить закладку » « Сделать стартовой » | |||
|
|||
|
Динамическое выполнение кода в VB.NET
Николай Белоусов
Источник: www.vbstreets.ru В статье рассказывается о возможность динамического выполнения кода непосредственно из приложения на VB.NET. ВведениеЯ думаю всем программистам, которые занимаются одновременно и поддержкой пользователей, знакома ситуация когда юзеры подходят и просят добавить к программе такую фичу, чтобы они могли сами дописывать куски к исходной программе. Не хватает иногда им, видите ли, встроенной функциональности. Не знаю как вам, но меня уже достали! Только придешь на работу, сразу стайками подбегают и просят, чтобы что-нибудь такое приделал к программе: Никогда не предполагал, но оказывается Microsoft сделала такую фичу! И теперь каждый юзер может своими собственными руками писать разные добавки, и они могут выполняться прямо из программы. Создание приложенияДля создания приложения которое может динамически выполнять код нам потребуется всего ничего:
Теперь осталось добавить обработчик на нажатие кнопки, чем мы собственно и займемся: Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles Button1.Click
Dim objCodeCompiler As System.CodeDom.Compiler.ICodeCompiler = New _
VBCodeProvider().CreateCompiler ' создали объект нашего компилятора
Dim objCompilerParameters As New System.CodeDom.Compiler.CompilerParameters()
' а это параметры к нему (что-то типа imports, можно конечно и без этого,
' но тогда это все придется дописывать к программе самому пользователю)
objCompilerParameters.ReferencedAssemblies.Add("System.dll")
objCompilerParameters.ReferencedAssemblies.Add("System.Windows.Forms.dll")
objCompilerParameters.ReferencedAssemblies.Add("Microsoft.VisualBasic.dll")
' добавили нужные нам ссылки
objCompilerParameters.GenerateInMemory = True
' а также укажем что это все надо генерировать в памяти
Dim strCode As String = TextBox1.Text
' а это собственно наш код из текст бокса
Dim objCompileResults As System.CodeDom.Compiler.CompilerResults = _
objCodeCompiler.CompileAssemblyFromSource(objCompilerParameters, strCode)
' попытаемся скомпилировать все это дело
If objCompileResults.Errors.HasErrors Then
' если присутствуют какие-либо ошибки выведем пользователю первую
' можно бы было и все загнать в какой-нибудь listbox но было лень...
MsgBox("Error: Line>" & objCompileResults.Errors(0).Line.ToString & ", " & _
objCompileResults.Errors(0).ErrorText)
Exit Sub
End If
Dim objAssembly As System.Reflection.Assembly = objCompileResults.CompiledAssembly
' создаем сборку
' выполнение программы начнется с класса MainClass
Dim objTheClass As Object = objAssembly.CreateInstance("MainClass") If objTheClass _
Is Nothing Then
' если такового класса нет, то увы...
MsgBox("Can't load class...")
Exit Sub
End If
' а вот если он есть то вызываем его метод ExecuteCode и вперед...
Try
objTheClass.GetType.InvokeMember("ExecuteCode",
System.Reflection.BindingFlags.InvokeMethod, _
Nothing, objTheClass, Nothing)
Catch ex As Exception
MsgBox("Error:" & ex.Message)
End Try
End Sub
Вот собственно и вся наша программа. Функциональность конечно минимальная, но дальше и сами разберетесь: Написание исполняемого кодаИ последняя часть нашей работы, соответственно создание приложения, которое мы потом поместим в Textbox. Сделаем все по минимуму:Imports System.Windows.Forms Public Class MainClass Public Function ExecuteCode() Dim objTest As New TestClass() MessageBox.Show(objTest.Test) End Function End Class Public Class TestClass Public Function Test() Return "Работает!!!" End Function End Class Тут, как говорится, комментарии излишни... ЗаключениеЕсли кому-то лень проделывать описанные выше операции самому можете воспользоваться примером. Рубрика: .NET Framework
HTML 5: пять вещей вызывающих особый интер....
HTML 5 — это грядущее обновление гипертекстового языка разметки, основного способа создания контента для размещения его во всемирной паутине. Разработка HTML остановилась в 1999 году, на версии HTML 4.01 и с тех пор web-содержимое изменилось так, что текущие спецификации HTML перестали соответствовать сегодняшним требованиям. HTML 5 нацелен на то, чтобы увеличить функциональную совместимость HTML и соответствовать растущим требованиям разнообразного и смешанного web-контента. HTML 5 так же нацелен на устранение недостатков четвертой версии. В этой статье мы взглянем на 5 новых интересных вещей в HTML 5.
Подробнее... |
Рубрика: Html
| Добавлено: 22.12.2008
asp.net: ListView с разных сторон.
Элемент управления ListView был представлен в .Net Framework 3.5 как замена устаревшему GridView. Новый элемент имеет более расширенный функционал, чем его предшественник, но в тоже время лишен некоторых внутренних механизмов, что впрочем целиком следствие из расширенной универсальности ListView. Среди отличий ListView и GridView можно назвать и гибкую настройку разметки, что позволяет выводить данные не только в табличном виде, но и вообще в любом каком пожелает программист. Благодаря шаблонам ItemTemplate, EditItemTemplate, InsertItemTeplate можно настроить внешний вид при любом из состояний ListView: редактировании или выборе элемента.
Подробнее... |
Рубрика: .NET компоненты
| Добавлено: 22.12.2008
Создание кросс-таб отчета в Stimulsoft Rep....
Компания Стимулсофт предоставляет для разработчиков мощный набор инструментов для создания отчетов для Microsoft Visual Studio .Net 2005 и 2008; эти инструменты доступны как для Windows Forms, так и для Web Forms. Это генератор отчетов Stimulsoft Reports.Net. Генератор отчетов Stimulsoft Reports.Net имеет ряд особенностей: простая работа с дизайнером отчетов, полная поддержка экспорта в PDF, Word, Excel и многие другие форматы. Crystal Report и Microsoft Reporting Service – очень хорошие программные продукты для повседневной работы, но, если Вам необходимо создать отчеты с поддержкой кросс-табов, drill down, Ajax, штрих-кодов и возможностью подключения одновременно более одного источника данных, то Stimulsoft Reports.Net поможет Вам сэкономить массу времени. Также, данный генератор отчетов позволяет пользователям создавать свои собственные отчеты любой сложности. И все эти особенности делают Stimulsoft Reports.Net хорошим выбором в сфере программных продуктов для Business Intelligence.
Подробнее... |
Рубрика: .NET компоненты
| Добавлено: 22.12.2008
Остальные статьи: |
Цитата дня (все,добавить):
|
Realcoding.NET
© 2003-2008 |
Контакты |
Реклама на сайте
|