vb.net - 在我的程序中运行 VB.Net 代码,无需创建实例或参数。可能吗?
问题描述
我目前正在尝试制作一个程序,您可以在其中将 VB.NET 脚本输入到富文本框(strCode)中,然后执行它。就像我在 Visual Studio 中执行它一样。
我当前的代码如下所示:
Dim objCompilerParameters As New CompilerParameters
objCompilerParameters.ReferencedAssemblies.Add("Microsoft.VisualBasic.dll")
objCompilerParameters.ReferencedAssemblies.Add("System.dll")
objCompilerParameters.ReferencedAssemblies.Add("System.Windows.Forms.dll")
objCompilerParameters.GenerateInMemory = True
Dim objCompileResults As CompilerResults
Dim Provider As CodeDomProvider = CodeDomProvider.CreateProvider("VisualBasic")
objCompileResults = Provider.CompileAssemblyFromSource(objCompilerParameters, strCode)
' Get a reference to the assembly.
'
Dim objAssembly As System.Reflection.Assembly = objCompileResults.CompiledAssembly
' Create an instance of the DynamicCode class referenced in the source code.
'
Dim objTheClass As Object = objAssembly.CreateInstance("Dynam.DynamicCode")
'----------------------------------------------------------------------------------------------------
' Create a parameter to be passed into the ExecuteCode function in class DynamicCode.
Dim objFunctionParameters(0) As Object
objFunctionParameters(0) = "Parameter 1"
'----------------------------------------------------------------------------------------------------
'Creating Result
Dim objResult As Object = objTheClass.GetType.InvokeMember("ExecuteCode", _
BindingFlags.InvokeMethod, Nothing, objTheClass, objFunctionParameters)
'---------------------
这运行良好..只要我的脚本中的命名空间是“Dynam”,并且公共类是“TestClass”。公共功能也必须命名为“ExecuteCode”。就像在剧本中一样。
有没有办法创建它,而不必对函数和类名进行硬编码?所以我可以调用这些类,并调用用户想要调用它们的任何函数。
提前致谢。我希望这有点道理。如果没有,请告诉我。
解决方案
推荐阅读
- c# - for 循环内的代码不起作用。指数数组的边界之外
- javascript - 如果附件不存在则隐藏 DIV
- vue.js - VueJS验证没有触发第一次调用
- python - Discord.py:如何使 command_prefix 不区分大小写?
- multithreading - 用作参数时,“闭包可能比当前函数寿命更长”
- python - 为什么 str() 不使用 __getattribute__ 来获取 __str__ 以及如何产生效果?
- java - 错误java.lang.NoClassDefFoundError:解析失败:Lorg/geotools/factory/StrictHints;
- python - Python .exe 使用 __VERSION__ 更新文件文本
- javascript - 如何动态更改 javascript 代码
- c# - 在 IIS 中发布后无法访问页面/文件夹