首页 > 解决方案 > 在我的程序中运行 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”。就像在剧本中一样。

有没有办法创建它,而不必对函数和类名进行硬编码?所以我可以调用这些类,并调用用户想要调用它们的任何函数。

提前致谢。我希望这有点道理。如果没有,请告诉我。

标签: vb.net

解决方案


推荐阅读