用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c#代码库

通过string动态生成类

2017-04-01 作者:莫名其妙举报

[c#]代码库

using Microsoft.CSharp;
using System;
using System.CodeDom;
using System.CodeDom.Compiler;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace 测试程序
{
    public class 通过string生成类
    {
        public Assembly CompileClass ( )
        {
            string code = @"
         
         public class Test 
         {
            public string name{get; set;} 
            
            public int age{get; set;}

         }";

            CompilerResults compilerResults = CompileScript(code);//调用CompileScript 方法。

            if (compilerResults.Errors.HasErrors)
            {
                throw new InvalidOperationException("Expression has a syntax error.");
            }

            Assembly assembly = compilerResults.CompiledAssembly;//得到程序集对象。里面包含了类、接口、方法、属性。。。等等。

            return assembly;
        }

        public CompilerResults CompileScript ( string source )
        {
            CompilerParameters parms = new CompilerParameters();
            parms.GenerateExecutable = false;// 是否生成exe 可执行文件。
            parms.GenerateInMemory = true;//是否在内存中生成space
            parms.IncludeDebugInformation = false;//是否包含debug 信息
            parms.ReferencedAssemblies.Add("System.dll");
            parms.ReferencedAssemblies.Add("Mongo.dll");
            
            CodeDomProvider compiler = CSharpCodeProvider.CreateProvider("CSharp");
            return compiler.CompileAssemblyFromSource(parms, source);
        }
    }
}


分享到:
更多

网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。