`
womendu
  • 浏览: 1484584 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

vb.net 实现javascript中的Eval功能

阅读更多

  vb.net中实现javascript中包含的功能,绝对不会有问题。做过javascript开发的程序员对eval都会有深刻的印象。只是在vb.net中实现这个功能没有想象得那么简单。不管怎么说能实现就好。但不知道是否还有其他比较简单的方法。

  例子代码如下:

ImportsSystem.CodeDom.Compiler
PublicClassForm1ClassForm1

PrivateSubButton1_Click()SubButton1_Click(ByValsenderAsSystem.Object,ByValeAsSystem.EventArgs)HandlesButton1.Click
 
MsgBox(Calculate("1+2*3+4").ToString)
EndSub


PublicFunctionCalculate()FunctionCalculate(ByValexpressionAsString)AsObject
DimclassNameAsString="clsF"
DimmethodNameAsString="funCal"

DimclassSourceAsNewSystem.Text.StringBuilder

classSource.Append(
"publicclass"+className+vbCrLf)
classSource.Append(
"publicfunction"+methodName+"()asobject"+vbCrLf)
classSource.Append(
"return"+expression+vbCrLf)
classSource.Append(
"endfunction"+vbCrLf)
classSource.Append(
"endclass")

DimcodeProviderAsNewVBCodeProvider
DimcParamsAsNewCompilerParameters
cParams.GenerateExecutable
=False
cParams.GenerateInMemory
=False
DimcResultsAsCompilerResults=codeProvider.CompileAssemblyFromSource(cParams,classSource.ToString)
DimasmAsSystem.Reflection.Assembly=cResults.CompiledAssembly
DimevalAsObject=asm.CreateInstance(className)
DimmethodAsSystem.Reflection.MethodInfo=eval.GetType().GetMethod(methodName)
Dimargs()AsString=Nothing
DimreObjAsObject=method.Invoke(eval,args)

GC.Collect()
ReturnreObj
EndFunction

EndClass
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics