zoukankan      html  css  js  c++  java
  • c# 中的evel

    using System;
    using System.Linq;
    using System.Text;
    using System.Collections.Generic;

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

    namespace CSHARP_EVAL_FUNCTION
    {
    public class EVAL
    {
    private static string prefix = @"using System;
    public static class DynamicClass
    {
    public static void Bomb()
    {";

    public static string postfix = @"}}";

    public string content { get; set; }

    public void Eval()
    {
    if (content == "")
    {
    Console.WriteLine("必须为Content属性赋予值");
    return;
    }
    string code = prefix + content + postfix;
    CompilerResults result = null;

    using (var provider = new CSharpCodeProvider())
    {
    var options = new CompilerParameters();
    options.GenerateInMemory = true;

    result = provider.CompileAssemblyFromSource(options, code);

    if (result.Errors.HasErrors)//编译有错误
    {
    var errorMsg = new StringBuilder();
    foreach (CompilerError error in result.Errors)
    {
    errorMsg.AppendFormat("Line:{0},Column:{1},Content:{2}", error.Line, error.Column, error.ErrorText);
    }
    Console.WriteLine(errorMsg.ToString());
    }
    else//运行类 DynamicClass 中的HelloWorld方法
    {

    Type dynamicClass = result.CompiledAssembly.GetType("DynamicClass");
    dynamicClass.InvokeMember("Bomb", BindingFlags.InvokeMethod | BindingFlags.Static | BindingFlags.Public, null, null, null);
    }
    }

    }
    }
    }

    http://blog.csdn.net/ghostbear/article/details/7764510

  • 相关阅读:
    约数
    质数
    回炉重造之重读Windows核心编程-018-堆栈
    回炉重造之重读Windows核心编程-017- 内存映射文件
    换电脑遇到git的一些记录
    python3之迭代器和生成器
    python3之类和对象
    python3之错误和异常
    python3之函数
    python3之流程控制
  • 原文地址:https://www.cnblogs.com/zcm123/p/6692510.html
Copyright © 2011-2022 走看看