我当前正在尝试制作一个程序,您可以在其中将VB.NET脚本键入RichTextbox(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”。就像在脚本中一样。
有没有一种方法可以创建此方法,而不必对函数和类名进行硬编码?因此,我可以只调用类,并且可以根据用户的需要调用它们。
先谢谢了。我希望这有点道理。如果没有,请告诉我。