vb.net 实现javascript中的Eval功能
来源:互联网 发布:松下plc编程与应用 编辑:程序博客网 时间:2024/05/29 13:30
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
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 实现javascript中的Eval功能
- java中实现javascript eval()功能
- 实现JavaScript中eval()函数的功能
- javascript中的eval函数
- Javascript中的eval函数
- Javascript中的eval函数
- JavaScript中的eval()函数
- JavaScript 中的eval
- javascript中的eval函数
- javascript中的eval函数
- JavaScript中的eval()方法
- javascript中的eval
- JavaScript中的eval函数
- php中的eval和JavaScript中的eval
- VB.Net较为特殊功能实现
- VB.net实现图像验证码功能
- vb.net实现验证码功能
- VB.net+三层架构 实现登录功能
- apache虚拟目录物理路径和端口修改
- 羔羊和白玫瑰
- 使用.NET语言开发Silverlight应用程序入门(二):界面和对象模型
- 一个MM的故事——淡淡的,很温馨
- C# 3.0 入门系列(一)
- vb.net 实现javascript中的Eval功能
- C# 3.0入门系列(二)
- 揭开正则表达式的神秘面纱 (一)
- DIV盖住下拉列表
- css引用不起作用的解决方法
- 盖茨十条成功箴言
- 揭开正则表达式的神秘面纱 (二)
- PHP-进行模块化设计
- 华为技术之协议原理与实现