首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

string语句的写法.

2012-01-13 
求一个string语句的写法...我想动态生成一个string的语句: frmEmployeefrmnewfrmfrm.show()其中 frmEmp

求一个string语句的写法...
我想动态生成一个string的语句: 
        frmEmployee   frm=new   frm;  
        frm.show();    
其中 frmEmployee是用参数传进去的,请问这个string   的语名怎么写?

===========================下面的方法可以执行组合的string源码======================================
    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);
                }
 

=========================================
就是不知道把中间那个vSource   的值换为:
  frmEmployee   frm=new   frm;  
        frm.show();    
怎么去写.....



[解决办法]
get set里做个手脚如何
[解决办法]
你frmEmployee 这个类都写不进去
[解决办法]
这代码很熟悉,-_-!!! 好象是我写的
[解决办法]
参考如下代码实现

// 动态调静态

private void button1_Click(object sender, EventArgs e)
{
ICodeCompiler vCodeCompiler = new CSharpCodeProvider().CreateCompiler();
CompilerParameters vCompilerParameters = new CompilerParameters();
vCompilerParameters.GenerateExecutable = false;
vCompilerParameters.GenerateInMemory = true;

vCompilerParameters.ReferencedAssemblies.Add(GetType().Module.FullyQualifiedName); // < < < < < < < < < <添加模块文件路径
vCompilerParameters.ReferencedAssemblies.Add( "System.dll ");
vCompilerParameters.ReferencedAssemblies.Add( "System.Windows.Forms.dll ");

string vSource =
"using " + GetType().Namespace + ";\n " + // 引用命名空间
"using System.ComponentModel;\n " +
"using System.Windows.Forms;\n " +
"public class Temp\n " +
"{\n " +
" public void Test()\n " +
" {\n " +
" new " + GetType().Name + "().Show(); " + // 生成类实例
" }\n " +
"}\n ";
Console.WriteLine(typeof(Component).Module.FullyQualifiedName);
CompilerResults vCompilerResults =
vCodeCompiler.CompileAssemblyFromSource(vCompilerParameters, vSource);
if (vCompilerResults.Errors.Count > 0)
{
foreach (CompilerError vCompilerError in vCompilerResults.Errors)
{
Console.WriteLine( "错误: " + vCompilerError.ErrorText);
}
return;
}

Assembly vAssembly = vCompilerResults.CompiledAssembly;
object vTemp = vAssembly.CreateInstance( "Temp ");
MethodInfo vTest = vTemp.GetType().GetMethod( "Test ");
vTest.Invoke(vTemp, null);
}

[解决办法]
2.0不用ICodeCompiler了, 直接

CompilerResults vCompilerResults =
CodeDomProvider.CreateProvider( "CSharp ").CompileAssemblyFromSource(vCompilerParameters, vSource);

热点排行