/*
using System.Reflection;
using System.CodeDom;
using System.CodeDom.Compiler;
*/
private void Compiler()
{
CompilerParameters vCompilerParameters = new CompilerParameters();
vCompilerParameters.GenerateExecutable = false;
vCompilerParameters.GenerateInMemory = true;
vCompilerParameters.ReferencedAssemblies.Add("System.Windows.Forms.dll");//添加引用
string vSource =
"using System.Windows.Forms; " +//添加引用
"public class ClassTemp " +
"{ public ClassTemp(string ls_cs){MessageBox.Show(ls_cs);}" +
" public void Test(string ls_test) " +
" { " +
" MessageBox.Show(ls_test);" +
" } " +
"} ";
CompilerResults vCompilerResults =
CodeDomProvider.CreateProvider("CSharp").CompileAssemblyFromSource(vCompilerParameters, vSource);
Assembly vAssembly = vCompilerResults.CompiledAssembly;//至此编译出Assembly
Object[] args1 = new Object[1];
args1[0] = "test";
object vTemp = vAssembly.CreateInstance("ClassTemp", true, System.Reflection.BindingFlags.Default, null, args1, null, null);//创建类的实例
MethodInfo vTest = vTemp.GetType().GetMethod("Test");//从实例中取到方法放入MethodInfo中
Object[] args = new Object[1];
args[0] = "test";
vTest.Invoke(vTemp, args);//调用方法
}
分享到:
相关推荐
CompilerAssemblyFromSource(CompilerParameters option, string source):使用指定的编译器,从包含源代码的字符串设置编译程序集。 三、CompilerParameters 表示用于调用编译器的参数。 ReferencedAssemblies:...
超越今天各自为营的超越今天各自为营的 超越今天各自为营的 Web 站点 站点站点 站点 把 把把 把 Internet 建成一 建成建成 建成 个 一个一 一个可 可个可 可 以互相交换组件的地方 以互相...
SayHello类持有一个对EnHelloGenerator的引用,并负责将生成出来的问候字符串打印出来。 using System; namespace IocInCSharp { public class SayHello { private EnHelloGenerator _helloGen; public ...
幽灵建造GhostBuild是用于各种项目(由编写)的简单MSBuild启动器的(POC)集合。... 这是一个字符串数组,因此用引号引起来并用逗号分隔(例如“ arg1”,“ arg2”)。 从Out-CompressedDll操作复制压缩的.Net程