如何在c#,winforms中的运行时编译中传递参数?

如何在c#,winforms中的运行时编译中传递参数?,c#,winforms,codedom,runtime-compilation,C#,Winforms,Codedom,Runtime Compilation,我被困在运行时编译和代码领域。 这里有一个简单的例子来说明我到目前为止所做的 public static void Testing() { CodeDomProvider codeProvider = CodeDomProvider.CreateProvider("CSharp"); string Output = "Out.exe"; System.CodeDom.Compiler.CompilerParameters paramete

我被困在运行时编译和代码领域。 这里有一个简单的例子来说明我到目前为止所做的

public static void Testing()
    {
        CodeDomProvider codeProvider = CodeDomProvider.CreateProvider("CSharp");
        string Output = "Out.exe";

        System.CodeDom.Compiler.CompilerParameters parameters = new CompilerParameters();

        parameters.GenerateExecutable = true;
        parameters.OutputAssembly = Output;
        parameters.ReferencedAssemblies.Add("System.dll");
        parameters.ReferencedAssemblies.Add("System.Drawing.Dll");
        parameters.ReferencedAssemblies.Add("System.Windows.Forms.Dll");
        parameters.CompilerOptions = "/t:winexe";

        string[] text = new string[] { @"C:\MyProject\Test.cs", @"C:\MyProject\Test.Designer.cs",
        @"C:\MyProject\Program.cs"};

        CompilerResults results = codeProvider.CompileAssemblyFromFile(parameters, text);

        Process.Start(Output);

    }
它工作正常,并加载测试表单

但是!我需要向这个测试表单(面板控件列表)传递一个参数来填充表单

我该怎么做?也许,我看错了方向,必须用另一种方式来做? 提前多谢

编辑
最后,我放弃了CodeDom,转而使用,将主程序中的信息注入.exe文件。

您所做的是编译一个可执行程序集,然后在另一个进程中启动它

如果要传递信息。但是,在命令行上传递.Net对象将不起作用

如果您想传递某个托管的东西,您将不得不使用新的程序集,并将您的对象传递给构造函数,这可能取决于您正在编译的代码接受的内容,如果您在设计时接受的话


你在写visualstudio吗

也许您可以将该参数作为命令行参数传递,并在子应用程序中处理它?@khachik谢谢您的回答!请您提供更多关于在动态编译中如何将参数传递给命令行的信息,好吗?请您解释一下您的要求。“我没有弄清楚,”Subbash喇嘛很快,我需要实现以下目标。用户应该可以首先用各种东西填充面板控件列表,然后创建一个.exe文件,其中包含此测试表单和面板。因此,我需要将面板列表传递给类,该类将被动态编译。您还没有接近。首先创建一个执行此操作的示例Winforms项目。只有到那时你才会知道要生成什么代码。谢谢你的回答!这一切对于我试图实现的这么简单的事情来说似乎有点太复杂了。在上面,我试图解释我在对Subhash喇嘛的评论中所做的事情。