Button_click()
{
    str="MessageBox.show("无法找到参数!")"
    method_test(str)
}method_test(string str)
{
    //此处要执行Str所包含的内容....}
=========================
请问以上如何处理?

解决方案 »

  1.   

    难道你是说通过引用传递?然后修改传递的参数?
    method_test(ref string str)
    {
        //此处要执行Str所包含的内容....}
      

  2.   

    你需要匿名方法 参照http://msdn2.microsoft.com/en-us/library/0yw3tz5k(VS.80).aspx
      

  3.   

    Button_click()
    {
        str="MessageBox.show("无法找到参数!")"
        method_test(str)
    }method_test(string str)
    {
        //此处要执行Str所包含的内容....
       //现在Str=“MessageBox.show("无法找到参数!")",如何执行Str所包含的语名行呢?
        }
      

  4.   

    button1.Click += delegate(System.Object o, EventArgs ea)
                       { System.Windows.Forms.MessageBox.Show
    ("Click!"); }; 它可以起类似的效果你的要求可以用Microsoft.CSharp.Compiler class实现
      

  5.   

    using Microsoft.CSharp;
    using System.CodeDom.Compiler;
    using System.Reflection;private void method_test(string ACode)
    {
        ICodeCompiler vCodeCompiler = new CSharpCodeProvider().CreateCompiler();
        CompilerParameters vCompilerParameters = new CompilerParameters();
        vCompilerParameters.GenerateExecutable = false;
        vCompilerParameters.GenerateInMemory = true;
        vCompilerParameters.ReferencedAssemblies.Add("System.Windows.Forms.dll");  
        string vSource =
            "using System.Windows.Forms;\n" +
            "public class Temp\n" +
            "{\n" +
            "    public void Test()\n" +
            "    {\n" +
            "         " + ACode + "\n" +
            "    }\n" +
            "}\n";
        CompilerResults vCompilerResults =
            vCodeCompiler.CompileAssemblyFromSource(vCompilerParameters, vSource);
        
        Assembly vAssembly = vCompilerResults.CompiledAssembly;
        object vTemp = vAssembly.CreateInstance("Temp");
        MethodInfo vTest = vTemp.GetType().GetMethod("Test");
        vTest.Invoke(vTemp, null);
    }private void button1_Click(object sender, EventArgs e)
    {
        string str = "MessageBox.Show(\"无法找到参数!\");";
        method_test(str);
    }