Eval.cs的改进版 动态编译类,可以计算表达式,也可以调用系统中的类

/*

动态编译类,可以计算表达式,也可以调用系统中的类

调用方式:     return new XXXXXXX.Eval().GetValue("System.DateTime.Now")

返回结果:     2005-08-04 15:00:24

*/
using System;
using System.CodeDom;
using System.CodeDom.Compiler;
using Microsoft.CSharp;
using System.Reflection;
using System.IO;

namespace XXXXXXX
{
 /*****************************************************************
 ** 文件名:       Eval.cs
 ** Copyright (c) 1999 -2003
 ** 创建人:       Phoenix
 ** 创建日期:
 ** 修改人:   BigmouthZ@163.net
 ** 修改日期: 2005/08/04
 ** 描 述:         获取字符串所表示的逻辑意义
 ** 版 本:1.0
 ******************************************************************/
 public class Eval
 {
  public object GetValue( string value )
  {
   string codeSnippet =
@"
using System;
using System.Collections;
using DBCore;namespace CzG
{
 public class $0$
 {
  public $0$(){}
  public object GetValue()
  {
   return $1$ ;
  }
 }
}";
   string tmp = "Eval" + Convert.ToString(System.DateTime.Now.Ticks);
   codeSnippet = codeSnippet.Replace("$0$",tmp);
   codeSnippet = codeSnippet.Replace("$1$",value);
   object b = "";
   try
   {
    ICodeCompiler compiler =  new CSharpCodeProvider().CreateCompiler();
    CompilerParameters para = new CompilerParameters();
    para.ReferencedAssemblies.Add( "System.dll" );
    string path = System.Environment.CurrentDirectory;
para.ReferencedAssemblies.Add( path + @"\DBCore.dll" );    para.GenerateInMemory = true;
    para.GenerateExecutable = false;
    para.OutputAssembly = path + "\\" + tmp + ".dll";

CompilerResults cr = compiler.CompileAssemblyFromSource(para, codeSnippet);
    Assembly asm = cr.CompiledAssembly;
  
    object obj = asm.CreateInstance( "CzG." + tmp );
    Type type = asm.GetType( "CzG." + tmp );
    MethodInfo mi = type.GetMethod("GetValue"); 
    
    b =  mi.Invoke( obj , null );
    GC.Collect();
    System.IO.File.Delete( path + "\\" + tmp + ".dll");
   }
   catch
   {
    b = "CallError!";
   }

return b;
  }
 }
}

转载于:https://www.cnblogs.com/bigmouthz/archive/2006/01/24/322546.html

Eval.cs的改进版 动态编译类,可以计算表达式,也可以调用系统中的类相关推荐

  1. app依赖module A,module A依赖module B,app直接调用B中工具类失败

    项目app依赖android library A:android library A 又依赖android library B:想在A中直接调用B中的类,手动同步失败导致或者在app中无法调用B中工具 ...

  2. java类描述_java笔记2:Java语言中的类和对象的描述

    在Java 语言中,除8 个基本数据类型值之外, 一切都是对象,而对象就是面向对象程序设计的中心. 对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还 ...

  3. tp5类的属性不存在_thinkPHP5.1框架中Request类四种调用方式示例

    本文实例讲述了thinkPHP5.1框架中Request类四种调用方式.分享给大家供大家参考,具体如下: 1. 传统调用 访问方式:http://127.0.0.1/demo/demo3/test?n ...

  4. spring@Autowired的对象为null,非容器中的类如何调用容器中的类

    1.问题描述 我们平时使用@Autowired注入对象时,一般被注入的类都带有@Coponent.@Controller.@Service .@repository等注解才可以.注入类和被注入类都被s ...

  5. C# 子类实例化基类 基类使用不了子类的方法_C#中的类、方法和属性

    这节讲C#中的类,方法,属性.这是面向对象编程中,我们最直接打交道的三个结构.    类: 类(class)是面向对象中最基本的单元,它是一种抽象,对现实世界中事物的抽象,在C#中使用class关键字 ...

  6. java调用包中的类_java调用另一个包中的类的方法

    java调用另一个包中的类的方法 发布时间:2020-05-18 15:04:40 来源:亿速云 阅读:199 作者:小新 今天小编给大家分享的是java调用另一个包中的类的方法,相信很多人都不太了解 ...

  7. python 绘图类_关于创建自定义绘图对象-python中的类,有很好的教程吗? - python...

    我想创建一个用于自定义绘图的对象类.我正在寻找有关如何创建自己的绘图对象的面向对象入门的好教程((可能仍在使用像matplotlib这样的库)? 例如. class myplot: def __ini ...

  8. python中的类是什么意思_如何理解python中的类和方法(转)

    一.python中类和对象的概念 首先,我们先来说说什么是类.看了很多关于python类的介绍,大多都介绍如何使用,但是对于概念却一笔带过,一个初学编程的小伙伴很难理解. 概括的说:类可以比作是某种类 ...

  9. java程序的类体由两部分组成,Java程序中每个类的定义由类头定义、类体定义两部分组成,其中类体部分包括属性和____. (10....

    在新饭店上市初期,把客房的价格定得很高,这种价格策略是(). A.满意定价策略 B.渗透定价策略 C.撇脂定价策略 D.声望定价策略 1297.( )在列管式换热器中,当热流体为饱和状态时,流体的逆流 ...

最新文章

  1. 漫话:如何给女朋友解释什么是 Git 和 GitHub?
  2. 进击的Android Hook 注入术《四》
  3. SAP Spartacus里使用Observable访问Component数据
  4. 实验 3 检查点和参数化实验报告--软件功能测试与性能测试实验
  5. 【渝粤题库】国家开放大学2021春1708农业产业发展规划题目
  6. etag java_你知道HTTP协议的ETag是干什么的吗?
  7. 杰富瑞主管:若BTC回落,将增加养老基金投资组合中的加密货币成分
  8. 猪肉新鲜度光谱特征指数构建及敏感性分析
  9. 在 Mac 中 使用 Safari 常出现「此网页正使用大量内存...」如何修复?
  10. java 字符流异常处理_IO字符流9jdk7和jdk9中流的异常的处理
  11. TinyPXE网络启动,打造无盘工作站
  12. 基于MS强度或计数的数据依赖法非标记定量蛋白质组学的蛋白质互作分析(一)
  13. cocos2dx[3.x](11)——拖尾渐隐效果MotionStreak
  14. 悬赏任务源码系统带app小程序源码基于php开源版
  15. windows 10 时间同步,时间显示不准自动校准。
  16. ESP8266基于MicroPython的TCP socket回调函数实现案例
  17. 北航计算机网络安全,李舟军
  18. luckysheet导出excel表格(使用exceljs,支持图片)
  19. php配置Apache(Windows)
  20. C语言函数指针调用函数

热门文章

  1. CCNP实验【静态出接口配置】
  2. 流量暴增,掌门教育如何基于 Spring Cloud Alibaba 构建微服务体系?
  3. Knative 实战:基于 Kafka 实现消息推送
  4. 循环链表C/C++实现(数据结构严蔚敏版)
  5. php 按 截取字符串,PHP按符号截取字符串的指定部分
  6. python关键字匹配_关于python:在遇到某个关键字后匹配值的正则表达式
  7. 图像降噪算法——DnCNN / FFDNet / CBDNet / RIDNet / PMRID / SID
  8. 图像降噪算法——非局部均值降噪算法
  9. 相机标定获得内参矩阵及其他参数
  10. 学习速率 learning rate