vb.net 实现javascript中的Eval功能
2007-09-28 16:43
405 查看
vb.net中实现javascript中包含的功能,绝对不会有问题。做过javascript开发的程序员对eval都会有深刻的印象。只是在vb.net中实现这个功能没有想象得那么简单。不管怎么说能实现就好。但不知道是否还有其他比较简单的方法。
例子代码如下:
Imports System.CodeDom.Compiler
Public Class Form1Class Form1
Private Sub Button1_Click()Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
MsgBox(Calculate("1+2*3+4").ToString)
End Sub
Public Function Calculate()Function Calculate(ByVal expression As String) As Object
Dim className As String = "clsF"
Dim methodName As String = "funCal"
Dim classSource As New System.Text.StringBuilder
classSource.Append("public class " + className + vbCrLf)
classSource.Append(" public function " + methodName + "() as object" + vbCrLf)
classSource.Append(" return " + expression + vbCrLf)
classSource.Append(" end function" + vbCrLf)
classSource.Append("end class")
Dim codeProvider As New VBCodeProvider
Dim cParams As New CompilerParameters
cParams.GenerateExecutable = False
cParams.GenerateInMemory = False
Dim cResults As CompilerResults = codeProvider.CompileAssemblyFromSource(cParams, classSource.ToString)
Dim asm As System.Reflection.Assembly = cResults.CompiledAssembly
Dim eval As Object = asm.CreateInstance(className)
Dim method As System.Reflection.MethodInfo = eval.GetType().GetMethod(methodName)
Dim args() As String = Nothing
Dim reObj As Object = method.Invoke(eval, args)
GC.Collect()
Return reObj
End Function
End Class
例子代码如下:
Imports System.CodeDom.Compiler
Public Class Form1Class Form1
Private Sub Button1_Click()Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
MsgBox(Calculate("1+2*3+4").ToString)
End Sub
Public Function Calculate()Function Calculate(ByVal expression As String) As Object
Dim className As String = "clsF"
Dim methodName As String = "funCal"
Dim classSource As New System.Text.StringBuilder
classSource.Append("public class " + className + vbCrLf)
classSource.Append(" public function " + methodName + "() as object" + vbCrLf)
classSource.Append(" return " + expression + vbCrLf)
classSource.Append(" end function" + vbCrLf)
classSource.Append("end class")
Dim codeProvider As New VBCodeProvider
Dim cParams As New CompilerParameters
cParams.GenerateExecutable = False
cParams.GenerateInMemory = False
Dim cResults As CompilerResults = codeProvider.CompileAssemblyFromSource(cParams, classSource.ToString)
Dim asm As System.Reflection.Assembly = cResults.CompiledAssembly
Dim eval As Object = asm.CreateInstance(className)
Dim method As System.Reflection.MethodInfo = eval.GetType().GetMethod(methodName)
Dim args() As String = Nothing
Dim reObj As Object = method.Invoke(eval, args)
GC.Collect()
Return reObj
End Function
End Class
相关文章推荐
- VB.net+三层架构 实现登录功能
- VB.NET+AJAX搜索建议功能的实现
- vb.net下利用反射实现字符串调用窗体的功能
- [VB.NET]求如何用VB.NET语言+ACCECC数据库实现一个对会员等级自动升级功能!
- VB.NET: DataGridView列头实现"全选"和"全不选"功能
- 章鱼哥出品_VB.NET ComboBox、 TextBox 实现自动完成、自动过滤 模糊查询的功能
- vb.net实现验证码功能
- vb.net机房收费系统一个小功能的实现
- ASP.NET中用C#类实现Javascript的基本功能
- ASP.NET 2.0 TreeView中用JavaScript实现单选功能.
- [VB.NET]请教: 如何通过继承ToolStrip和ToolStripItem类,实现类似TreeView的分层节点(菜单) 功能 ?
- Vb.net/VB 声明API函数实现父窗口功能
- 章鱼哥出品——VB.NET 屏幕自适应功能的实现
- 【VB.NET】打造一个象棋魔法学校的老师——谨以此文献给象棋爱好者——编写界面和功能的最终实现
- 在.NET中如何实现像VB.NET中MSBBOX的功能!?
- [VB.NET]用vb.net实现QQ传送文件的功能!~急用!!!!!!
- VB.Net较为特殊功能实现
- ASP.NET(C#)AJAX+JAVASCRIPT实现类似QQ,MSN窗口之功能(续)
- javascript实现像.net的正则表达式功能
- 实现VB.Net中的文本框TextBox的按行跳转功能