zoukankan      html  css  js  c++  java
  • C# 将字符串动态编译为Assembly

    /*
            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);//调用方法
            }

  • 相关阅读:
    小程序游戏如何接入支付呢?
    手机回复小程序客服消息
    小程序客服发送卡片消息
    小程序多客服对应售前售后,或者不同的客服人员
    php 7 event 安装
    workerman相关
    树莓派:你是我的眼
    Python应用03 使用PyQT制作视频播放器
    从写博到出书:过程全记录
    协议森林17 我和你的悄悄话 (SSL/TLS协议)
  • 原文地址:https://www.cnblogs.com/kuailewangzi1212/p/1358269.html
Copyright © 2011-2022 走看看