动态编译C# 代码

很多时候需要将某段C# 代码写在配置文件中,后续需要时进行编译;
比如,在配置文件中配置上“"echo.shine"=="echo.shine"”,然后将此段配置文件放进下面的方法中进行编译,就会得出true的值。
 
ExpandedBlockStart.gif View Code
public  static  bool getExpressionValue( string expression)
       {
           CSharpCodeProvider provider =  new CSharpCodeProvider();
           CompilerParameters parameter =  new CompilerParameters();
           parameter.ReferencedAssemblies.Add( " System.dll ");
           parameter.GenerateExecutable =  false;
           parameter.GenerateInMemory =  true;

            var comp_string =  @"
            using System; 
            namespace ANameSpace
            {
                static class AClass
                {
                    public static object AFunc()
                    {return 
" + expression +  @" ;}
                }
            }
";
           CompilerResults result = provider.CompileAssemblyFromSource(parameter,
               comp_string);
            if (result.Errors.Count >  0)
           {
                return  false;
           }
            else
           {
               Assembly assembly = result.CompiledAssembly;
               Type AType = assembly.GetType( " ANameSpace.AClass ");
               MethodInfo method = AType.GetMethod( " AFunc ");
                return Convert.ToBoolean(method.Invoke( nullnull));
           }
       }
这是很简单的代码,在动态编译中比较实用

转载于:https://www.cnblogs.com/Echo_saq/archive/2012/11/06/2757238.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值