• C# 动态生成dll


     

    using System;
    using System.CodeDom.Compiler;
    using Microsoft.CSharp;
    using System.Reflection;
    using System.Text;
    using System.CodeDom;
    using System.IO;

     

    namespace ConsoleApplication1
    {
        /// <summary>
        /// Class1 的摘要说明。
        /// </summary>
        class Class1
        {
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            [STAThread]
            static void Main(string[] args)
            {
                //
                // TODO: 在此处添加代码以启动应用程序
                //
                object i = Calc("38+44*4/2");
                Console.WriteLine(i.ToString());
                Console.ReadLine();

            }

            public static object Calc(string expression)
            {
                string classNamespace = "BS2.Custom";  //命名空间
                string className = "MF"+"Job";   //类名或表名
              
               
                string methodName = "Run";
                expression = expression.Replace("/", "*1.0/");   ///

                //生成一个可编译的单元,这是最根部的东西
                 CodeCompileUnit compunit = new CodeCompileUnit();

                //  创建编译器实例//设置编译器对象
                CSharpCodeProvider csprovider = new CSharpCodeProvider();
                ICodeCompiler complier = csprovider.CreateCompiler();
                ICodeGenerator gen = csprovider.CreateGenerator();   //生成CS文件
                //StreamWriter sw = new StreamWriter("testywm.cs", false);
                //StreamWriter writer = new StreamWriter(@"c:\testywm.cs", false);
                StreamWriter sw = new StreamWriter(@"c:\testywm.cs",false);
                gen.GenerateCodeFromCompileUnit(compunit, sw, new CodeGeneratorOptions());
              
                

                 //  设置编译参数。 
                CompilerParameters paras = new CompilerParameters();
                paras.GenerateExecutable = false;   //编译成exe还是dll
                paras.GenerateInMemory = false;           //是否写入内存,不写入内存就写入磁盘
                paras.OutputAssembly = "c:\\test.dll";         //输出路径
                paras.IncludeDebugInformation = false; //是否产生pdb调试文件      默认是false

                #region 动态添加dll引用
                paras.ReferencedAssemblies.Add("System.dll");//添加引用DLL
                paras.ReferencedAssemblies.Add("System.Data.dll");//添加引用DLL
                paras.ReferencedAssemblies.Add("D:\\BS2\\BSCore\\bin\\Debug\\BS2.Core.dll");//添加引用DLL
                paras.ReferencedAssemblies.Add("D:\\BS2\\BSHelp\\bin\\Debug\\BS2.Help.dll");//添加引用DLL
                paras.ReferencedAssemblies.Add("D:\\BS2\\csla20cs\\Csla\\bin\\Debug\\Csla.dll");//添加引用DLL
                #endregion

                StringBuilder classSource = new StringBuilder();
                #region 加载引用
                classSource.Append("using System;\r\n");
                classSource.Append("using System.Collections.Generic;\r\n");
                classSource.Append("using System.Text;\r\n");
                classSource.Append("using System.Data;\r\n");
                classSource.Append("using System.Data.SqlClient;\r\n");
                classSource.Append("using Csla;\r\n");
                classSource.Append("using Csla.Data;\r\n");
                classSource.Append("using BS2.Help;\r\n");
                classSource.Append("using BS2.Help.Enum;\r\n");
                #endregion

                #region 命名空间及类名
                classSource.Append("namespace " + classNamespace + " \r\n"); 
                classSource.Append("{ \r\n");
                classSource.Append("   /// <summary> \r\n");
                classSource.Append("    /// 职务 (可编辑根对象) \r\n");
                classSource.Append("    /// </summary> \r\n");
                classSource.Append("    [Serializable()]   \r\n ");
                classSource.Append("    public class "+ className +" : BusinessBase<"+ className +">  \r\n");
                classSource.Append("    {  \r\n");
                #endregion

                #region 构造函数
                classSource.Append("        private "+ className +"()                   \r\n");
                classSource.Append("        { /* require use of factory methods */ }    \r\n");
                classSource.Append("        private "+ className +"(SafeDataReader dr)  \r\n");
                classSource.Append("        {                            \r\n");
                classSource.Append("            //Fetch(dr);             \r\n");
                classSource.Append("        }                            \r\n");
                 #endregion

                #region 业务属性

                classSource.Append(" private int _id;                           \r\n");
                classSource.Append(" private string _jobNo = string.Empty;      \r\n");
                classSource.Append(" private string _jobName = string.Empty;    \r\n");
                classSource.Append(" private string _jobNote = string.Empty;    \r\n");
                classSource.Append(" private byte[] _timestamp = new byte[8];   \r\n");


                classSource.Append("       /// <summary>     \r\n");
                classSource.Append("       /// ID            \r\n");
                classSource.Append("       /// </summary>    \r\n");
                classSource.Append(" [System.ComponentModel.DataObjectField(true, true)]    \r\n");
                classSource.Append("         [System.ComponentModel.Browsable(false)]       \r\n");
                classSource.Append("        public int Id     \r\n");
                classSource.Append("        {                 \r\n");
                classSource.Append("            get           \r\n");
                classSource.Append("            {             \r\n");
                classSource.Append("                CanReadProperty(true);       \r\n");
                classSource.Append("               return _id;                   \r\n");
                classSource.Append("             }                               \r\n");
                classSource.Append("             set                             \r\n");
                classSource.Append("            {                                \r\n");
                classSource.Append("                CanWriteProperty(true);      \r\n");
                classSource.Append("                if (_id != value)            \r\n");
                classSource.Append("                 {                           \r\n");
                classSource.Append("                     _id = value;            \r\n");
                classSource.Append("                     PropertyHasChanged();   \r\n");
                classSource.Append("                }                            \r\n");
                classSource.Append("             }                               \r\n");
                classSource.Append("         }                                   \r\n");

                classSource.Append("       /// <summary>                         \r\n");
                classSource.Append("       /// 职务编号                          \r\n");
                classSource.Append("       /// </summary>                        \r\n");
                classSource.Append("       [System.ComponentModel.DisplayName(\"职务编号\")]     \r\n");
                classSource.Append("       public string JobNo                                   \r\n");
                classSource.Append("       {                                     \r\n");
                classSource.Append("           get                               \r\n");
                classSource.Append("           {                                 \r\n");
                classSource.Append("               CanReadProperty(true);        \r\n");
                classSource.Append("               return _jobNo;                \r\n");
                classSource.Append("           }                                 \r\n");
                classSource.Append("           set                               \r\n");
                classSource.Append("            {                                \r\n");
                classSource.Append("               CanWriteProperty(true);       \r\n");
                classSource.Append("               if (value == null) value = string.Empty;      \r\n");
                classSource.Append("              if (_jobNo != value)                           \r\n");
                classSource.Append("               {                               \r\n");
                classSource.Append("                   _jobNo = value;             \r\n");
                classSource.Append("                    PropertyHasChanged();      \r\n");
                classSource.Append("                }    \r\n");
                classSource.Append("            }    \r\n");
                classSource.Append("       }    \r\n");

                classSource.Append("        /// <summary>            \r\n");
                classSource.Append("        /// 职务名称             \r\n");
                classSource.Append("        /// </summary>           \r\n");
                classSource.Append("        [System.ComponentModel.DisplayName(\"职务名称\")]    \r\n");
                classSource.Append("        public string JobName     \r\n");
                classSource.Append("        {                         \r\n");
                classSource.Append("            get                   \r\n");
                classSource.Append("            {                             \r\n");
                classSource.Append("                CanReadProperty(true);    \r\n");
                classSource.Append("                return _jobName;          \r\n");
                classSource.Append("           }                              \r\n");
                classSource.Append("            set                           \r\n");
                classSource.Append("            {                             \r\n");
                classSource.Append("                CanWriteProperty(true);    \r\n");
                classSource.Append("                if (value == null) value = string.Empty;    \r\n");
                classSource.Append("               if (_jobName != value)                        \r\n");
                classSource.Append("               {                                             \r\n");
                classSource.Append("                   _jobName = value;                         \r\n");
                classSource.Append("                   PropertyHasChanged();                     \r\n");
                classSource.Append("               }                                             \r\n");
                classSource.Append("           }                                                 \r\n");
                classSource.Append("        }                                                    \r\n");

                classSource.Append("        /// <summary>                                        \r\n");
                classSource.Append("        /// 职务描述                                         \r\n");
                classSource.Append("        /// </summary>                                       \r\n");
                classSource.Append("       [System.ComponentModel.DisplayName(\"职务描述\")]     \r\n");
                classSource.Append("        public string JobNote                                \r\n");
                classSource.Append("        {                                                    \r\n");
                classSource.Append("            get                                              \r\n");
                classSource.Append("           {                                                 \r\n");
                classSource.Append("                CanReadProperty(true);                       \r\n");
                classSource.Append("                return _jobNote;                             \r\n");
                classSource.Append("            }                                                \r\n");
                classSource.Append("           set                                              \r\n");
                classSource.Append("            {                                               \r\n");
                classSource.Append("               CanWriteProperty(true);                      \r\n");
                classSource.Append("               if (value == null) value = string.Empty;     \r\n");
                classSource.Append("               if (_jobNote != value)                       \r\n");
                classSource.Append("               {                                            \r\n");
                classSource.Append("                   _jobNote = value;                        \r\n");
                classSource.Append("                  PropertyHasChanged();                     \r\n");
                classSource.Append("               }                                            \r\n");
                classSource.Append("           }                                                \r\n");
                classSource.Append("       }                                                    \r\n");


                classSource.Append("        protected override object GetIdValue()           \r\n");
                classSource.Append("        {                                                \r\n");
                classSource.Append("            return _id;                                  \r\n");
                classSource.Append("        }                                                \r\n");

                classSource.Append("        public override string ToString()                \r\n");
                classSource.Append("        {                                                \r\n");
                classSource.Append("            return _jobNo + \"[\" + _jobName + \"]\";    \r\n");
                classSource.Append("        }                                                \r\n");

            #endregion

                #region 业务方法

            #endregion

                #region 约束规则

                classSource.Append("        protected override void AddBusinessRules()  \r\n");
                classSource.Append("        {  \r\n");
                classSource.Append("           base.AddBusinessRules();  \r\n");
                classSource.Append("            ValidationRules.AddRule(BS2.Core.Validation.BSCommonRules.BSStringRequired, \"JobNo\");  \r\n");
                classSource.Append("            ValidationRules.AddRule(BS2.Core.Validation.BSCommonRules.BSStringRequired, \"JobName\");  \r\n");
                classSource.Append("        }  \r\n");

                #endregion

                #region 权限规则

                classSource.Append("         public static bool CanAddObject()  \r\n");
                classSource.Append("         {  \r\n");
                classSource.Append("             return true;  \r\n");
                classSource.Append("          }  \r\n");

                classSource.Append("         public static bool CanGetObject()  \r\n");
                classSource.Append("         {  \r\n");
                classSource.Append("             return true;  \r\n");
                classSource.Append("         }  \r\n");

                classSource.Append("         public static bool CanDeleteObject()  \r\n");
                classSource.Append("         {  \r\n");
                classSource.Append("             return true;  \r\n");
                classSource.Append("          }  \r\n");

                classSource.Append("         public static bool CanEditObject()  \r\n");
                classSource.Append("         {  \r\n");
                classSource.Append("             return true;  \r\n");
                classSource.Append("         }  \r\n");

                #endregion

                #region Save方法

                classSource.Append("         public override "+ className +" Save()  \r\n");
                classSource.Append("         {  \r\n");
                classSource.Append("             if (IsNew) this.ValidationRules.CheckRules();  \r\n");
                classSource.Append("             if ((!IsNew) && (IsDirty) && (!this.IsChild) && (IsValid) && (EditLevel == 0))  \r\n");
                classSource.Append("             {  \r\n");
                classSource.Append("                 EnumBussinessObjState state = BS2.Core.Command.BussinessIsChanged.Execute(\"MF_JOB\", _id, _timestamp, EnumDataBase.SecurityDataBase);  \r\n");
                classSource.Append("                 if (state == EnumBussinessObjState.Deleted) throw new BS2.Core.BSUpdateBussinessException(\"当前要保存的对象已经被删除!\");  \r\n");
                classSource.Append("                 if (state == EnumBussinessObjState.Modifed)  \r\n");
                classSource.Append("                 {  \r\n");
                //classSource.Append("                      if (BS2.Help.ShowMesssage.Confirm(\"当前要保存的对象已经被他人修改过!\n保存操作将覆盖他人修改的内容,是否继续?\") == false) { throw new BS2.Core.BSNormalBussinessException(); }   \r\n");
                classSource.Append("                 }  \r\n");
                classSource.Append("                if (state == EnumBussinessObjState.UnKnown) { throw new BS2.Core.BSUpdateBussinessException(\"检查当前要保存的对象时发生未知情况!\"); }  \r\n");
                classSource.Append("            }  \r\n");
                classSource.Append("             return base.Save();  \r\n");
                classSource.Append("         }  \r\n");

                #endregion

                #region 工厂方法(静态)

                classSource.Append("        public static "+ className +" NewJob()                  \r\n");
                classSource.Append("        {                                                       \r\n");
                classSource.Append("            if (!CanAddObject())                                \r\n");
                classSource.Append("                throw new System.Security.SecurityException(    \r\n");
                classSource.Append("                  \"User not authorized to add a project\");    \r\n");
                classSource.Append("            return DataPortal.Create<"+ className +">();        \r\n");
                classSource.Append("        }                                                       \r\n");

                classSource.Append("        public static "+ className +" GetJob(int id)             \r\n");
                classSource.Append("        {                                                        \r\n");
                classSource.Append("            if (!CanGetObject())                                 \r\n");
                classSource.Append("                throw new System.Security.SecurityException(     \r\n");
                classSource.Append("                  \"User not authorized to view a project\");    \r\n");
                classSource.Append("            return DataPortal.Fetch<"+ className +">(new Criteria(id));  \r\n");
                classSource.Append("        }                                                                \r\n");

                classSource.Append("        public static "+ className +" GetJob(SafeDataReader dr)          \r\n");
                classSource.Append("        {                                                                \r\n");
                classSource.Append("            return new "+ className +"(dr);                              \r\n");
                classSource.Append("        }                                                                \r\n");

                classSource.Append("        public static void DeleteJob(int id)                             \r\n");
                classSource.Append("        {                                                                \r\n");
                classSource.Append("            if (!CanDeleteObject())                                      \r\n");
                classSource.Append("                throw new System.Security.SecurityException(             \r\n");
                classSource.Append("                  \"User not authorized to remove a project\");          \r\n");
                classSource.Append("            DataPortal.Delete(new Criteria(id));                         \r\n");
                classSource.Append("        }                                                                \r\n");

                 #endregion

                #region 数据访问方法

                classSource.Append("        [Serializable()]                         \r\n");
                classSource.Append("        private class Criteria                   \r\n");
                classSource.Append("        {                                       \r\n");
                classSource.Append("            private int _id;                    \r\n");
                classSource.Append("            public int Id  \r\n");
                classSource.Append("            {                                   \r\n");
                classSource.Append("                get { return _id; }             \r\n");
                classSource.Append("            }                                   \r\n");

                classSource.Append("            public Criteria(int id)              \r\n");
                classSource.Append("            { _id = id; }                        \r\n");
                classSource.Append("        }                                        \r\n");

                classSource.Append("        [RunLocal()]                             \r\n");
                classSource.Append("        private new void DataPortal_Create()     \r\n");
                classSource.Append("        {                                        \r\n");
                classSource.Append("            ;                                    \r\n");
                classSource.Append("        }                                        \r\n");

                classSource.Append("        private void DataPortal_Fetch(Criteria criteria)         \r\n");
                classSource.Append("        {                                                        \r\n");
                classSource.Append("            using (SqlConnection cn = new SqlConnection(BS2.Help.DataBaseConn.SecurityConnection))  \r\n");
                classSource.Append("            {                                                    \r\n");
                classSource.Append("                cn.Open();                                       \r\n");
                classSource.Append("                using (SqlCommand cm = cn.CreateCommand())       \r\n");
                classSource.Append("                {                                                \r\n");
                classSource.Append("                    string sSQL = \" SELECT MID,PID,JB_NO,JB_NAME,JB_NOTE,LastChanged FROM MF_JOB  WHERE MID=\" + criteria.Id.ToString();                                                            \r\n");
                classSource.Append("                    cm.CommandType = CommandType.Text;            \r\n");
                classSource.Append("                    cm.CommandText = sSQL;                        \r\n");
                classSource.Append("                    using (SafeDataReader dr = new SafeDataReader(cm.ExecuteReader()))  \r\n");
                classSource.Append("                    {                                                                   \r\n");
                classSource.Append("                        if (dr.Read())                                                  \r\n");
                classSource.Append("                        {                                                               \r\n");
                classSource.Append("                            Fetch(dr);                                                  \r\n");
                classSource.Append("                        }                                                               \r\n");
                classSource.Append("                    }                                                                   \r\n");
                classSource.Append("                }                                                                       \r\n");
                classSource.Append("            }                                                                           \r\n");
                classSource.Append("        }                                                                               \r\n");

                classSource.Append("        [Transactional(TransactionalTypes.TransactionScope)]                 \r\n");
                classSource.Append("       protected override void DataPortal_Insert()                           \r\n");
                classSource.Append("        {                                                                    \r\n");
                classSource.Append("           using (SqlConnection cn = new SqlConnection(BS2.Help.DataBaseConn.SecurityConnection))  \r\n");
                classSource.Append("          {                                                                 \r\n");
                classSource.Append("                cn.Open();                                                  \r\n");

                classSource.Append("                using (SqlCommand cm = cn.CreateCommand())                  \r\n");
                classSource.Append("               {                                                            \r\n");
                classSource.Append("                    string sSQL = \"INSERT INTO MF_JOB (JB_NO,JB_NAME,JB_NOTE) VALUES('\" + _jobNo + \"','\" + _jobName + \"','\" + _jobNote + \"')\";                                                          \r\n");
                classSource.Append("                    cm.CommandType = CommandType.StoredProcedure;            \r\n");
                classSource.Append("                   cm.CommandText = \"addBussiness\";                        \r\n");
                classSource.Append("                   cm.Parameters.AddWithValue(\"@InsertSQL\", sSQL);         \r\n");
                classSource.Append("                    cm.Parameters.AddWithValue(\"@TableName\", \"MF_JOB\");  \r\n");
                classSource.Append("                   SqlParameter param = new SqlParameter(\"@id\", SqlDbType.Int);       \r\n");
                classSource.Append("                    param.Direction = ParameterDirection.Output;                        \r\n");
                classSource.Append("                   cm.Parameters.Add(param);                                            \r\n");
                classSource.Append("                   param = new SqlParameter(\"@newLastChanged\", SqlDbType.Timestamp);  \r\n");
                classSource.Append("                    param.Direction = ParameterDirection.Output;                        \r\n");
                classSource.Append("                    cm.Parameters.Add(param);                                           \r\n");

                classSource.Append("                    cm.ExecuteNonQuery();                                          \r\n");

                classSource.Append("                    _id = (int)cm.Parameters[\"@id\"].Value;                       \r\n");
                classSource.Append("                   _timestamp = (byte[])cm.Parameters[\"@newLastChanged\"].Value;  \r\n");
                classSource.Append("               }                                                                   \r\n");
                classSource.Append("           }                                                                       \r\n");
                classSource.Append("        }                                                                          \r\n");

                classSource.Append("        [Transactional(TransactionalTypes.TransactionScope)]                         \r\n");
                classSource.Append("        protected override void DataPortal_Update()                                  \r\n");
                classSource.Append("       {                                                                             \r\n");
                classSource.Append("           if (base.IsDirty)                                                         \r\n");
                classSource.Append("            {                                                                        \r\n");
                classSource.Append("                using (SqlConnection cn = new SqlConnection(BS2.Help.DataBaseConn.SecurityConnection))                                                                                                    \r\n");
                classSource.Append("                {                                                                       \r\n");
                classSource.Append("                   cn.Open();                                                           \r\n");
                classSource.Append("                    using (SqlCommand cm = cn.CreateCommand())                          \r\n");
                classSource.Append("                    {                                                                   \r\n");
                classSource.Append("                        string sSQL = \"UPDATE MF_JOB SET JB_NO = '\" + _jobNo + \"',JB_NAME ='\" + _jobName + \"',JB_NOTE ='\" + _jobNote + \"'\" +                                                                        \r\n");
                classSource.Append("                            \" WHERE MID=\" + _id.ToString();                            \r\n");
                classSource.Append("                        cm.CommandType = CommandType.StoredProcedure;                    \r\n");
                classSource.Append("                       cm.CommandText = \"updateBussiness\";                             \r\n");
                classSource.Append("                       cm.Parameters.AddWithValue(\"@UpdateSQL\", sSQL);                 \r\n");
                classSource.Append("                       cm.Parameters.AddWithValue(\"@TableName\", \"MF_JOB\");           \r\n");
                classSource.Append("                       cm.Parameters.AddWithValue(\"@id\", _id);                         \r\n");
                classSource.Append("                        SqlParameter param = new SqlParameter(\"@newLastChanged\", SqlDbType.Timestamp);  \r\n");
                classSource.Append("                        param.Direction = ParameterDirection.Output;                     \r\n");
                classSource.Append("                       cm.Parameters.Add(param);                                         \r\n");
                classSource.Append("                        cm.ExecuteNonQuery();                                            \r\n");
                classSource.Append("                       _timestamp = (byte[])cm.Parameters[\"@newLastChanged\"].Value;    \r\n");
                classSource.Append("                   }                                                                     \r\n");
                classSource.Append("               }                                                                         \r\n");
                classSource.Append("            }                                                                            \r\n");
                 classSource.Append("        }                                                                               \r\n");


                classSource.Append("        [Transactional(TransactionalTypes.TransactionScope)]     \r\n");
                classSource.Append("        protected override void DataPortal_DeleteSelf()          \r\n");
                classSource.Append("        {                                                        \r\n");
                classSource.Append("            DataPortal_Delete(new Criteria(_id));                \r\n");
                classSource.Append("        }                                                        \r\n");

                classSource.Append("        [Transactional(TransactionalTypes.TransactionScope)]                 \r\n");
                classSource.Append("        private void DataPortal_Delete(Criteria criteria)                    \r\n");
                classSource.Append("        {                                                                    \r\n");
                classSource.Append("            using (SqlConnection cn = new SqlConnection(BS2.Help.DataBaseConn.SecurityConnection))  \r\n");
                classSource.Append("            {                                                                \r\n");
                classSource.Append("                cn.Open();                                                   \r\n");
                classSource.Append("                using (SqlCommand cm = cn.CreateCommand())                   \r\n");
                classSource.Append("                {                                                            \r\n");
                classSource.Append("                    cm.CommandType = CommandType.StoredProcedure;            \r\n");
                classSource.Append("                    cm.CommandText = \"deleteJob\";                          \r\n");
                classSource.Append("                    cm.Parameters.AddWithValue(\"@id\", criteria.Id);        \r\n");
                classSource.Append("                    cm.ExecuteNonQuery();                                    \r\n");
                classSource.Append("                }                                                            \r\n");
                classSource.Append("            }                                                                \r\n");
                classSource.Append("        }                                                                    \r\n");

                #endregion

                #region 数据访问方法(内存访问器访问)

                classSource.Append("        /// <summary>                    \r\n");
                classSource.Append("        /// 从数据访问器获取数据         \r\n");
                classSource.Append("        /// </summary>                   \r\n");
                classSource.Append("        /// <param name=\"dr\"></param>                          \r\n");
                classSource.Append("        private void Fetch(SafeDataReader dr)                    \r\n");
                classSource.Append("        {                                                        \r\n");
                classSource.Append("            _id = dr.GetInt32(\"MID\");                          \r\n");
                classSource.Append("            _jobNo = dr.GetString(\"JB_NO\");                    \r\n");
                classSource.Append("            _jobName = dr.GetString(\"JB_NAME\");                \r\n");
                classSource.Append("            _jobNote = dr.GetString(\"JB_NOTE\");                \r\n");
                classSource.Append("            dr.GetBytes(\"LastChanged\", 0, _timestamp, 0, 8);   \r\n");

                classSource.Append("            MarkOld();                   \r\n");
                classSource.Append("        }                                \r\n");

                #endregion

                #region 命名空间及类名结尾
                classSource.Append("   }         \r\n");
                classSource.Append("}            \r\n");
                #endregion

                sw.Write(classSource.ToString());   //输出文件
                sw.Close();    //关闭文件


       //System.Diagnostics.Debug.WriteLine(classSource.ToString());  调试用。注释掉
                //  编译代码。 
                CompilerResults result = complier.CompileAssemblyFromSource(paras, classSource.ToString());
                //  获取编译后的程序集。
               
                Assembly assembly = result.CompiledAssembly;
               
                ////  动态调用方法。
                //object eval = assembly.CreateInstance(className);
                //MethodInfo method = eval.GetType().GetMethod(methodName);
                object reobj = "生成dll成功";// method.Invoke(eval, null);
                //GC.Collect();
                return reobj;
                 
            }


        }
    }

  • 相关阅读:
    【poj2828】Buy Tickets
    【hdu2795】Billboard
    【hdu1394】Minimum Inversion Number
    【BZOJ1012】 【JSOI2008】最大数maxnumber
    【hdu】p1754I Hate It
    【线段树模板】
    Day1
    synchronized底层原理
    Java之浅拷贝和深拷贝
    图解算法——恢复一棵二叉搜索树(BST)
  • 原文地址:https://www.cnblogs.com/love2wllw/p/1709946.html
Copyright © 2020-2023  润新知