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的改进版 动态编译类,可以计算表达式,也可以调用系统中的类相关推荐
- app依赖module A,module A依赖module B,app直接调用B中工具类失败
项目app依赖android library A:android library A 又依赖android library B:想在A中直接调用B中的类,手动同步失败导致或者在app中无法调用B中工具 ...
- java类描述_java笔记2:Java语言中的类和对象的描述
在Java 语言中,除8 个基本数据类型值之外, 一切都是对象,而对象就是面向对象程序设计的中心. 对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还 ...
- tp5类的属性不存在_thinkPHP5.1框架中Request类四种调用方式示例
本文实例讲述了thinkPHP5.1框架中Request类四种调用方式.分享给大家供大家参考,具体如下: 1. 传统调用 访问方式:http://127.0.0.1/demo/demo3/test?n ...
- spring@Autowired的对象为null,非容器中的类如何调用容器中的类
1.问题描述 我们平时使用@Autowired注入对象时,一般被注入的类都带有@Coponent.@Controller.@Service .@repository等注解才可以.注入类和被注入类都被s ...
- C# 子类实例化基类 基类使用不了子类的方法_C#中的类、方法和属性
这节讲C#中的类,方法,属性.这是面向对象编程中,我们最直接打交道的三个结构. 类: 类(class)是面向对象中最基本的单元,它是一种抽象,对现实世界中事物的抽象,在C#中使用class关键字 ...
- java调用包中的类_java调用另一个包中的类的方法
java调用另一个包中的类的方法 发布时间:2020-05-18 15:04:40 来源:亿速云 阅读:199 作者:小新 今天小编给大家分享的是java调用另一个包中的类的方法,相信很多人都不太了解 ...
- python 绘图类_关于创建自定义绘图对象-python中的类,有很好的教程吗? - python...
我想创建一个用于自定义绘图的对象类.我正在寻找有关如何创建自己的绘图对象的面向对象入门的好教程((可能仍在使用像matplotlib这样的库)? 例如. class myplot: def __ini ...
- python中的类是什么意思_如何理解python中的类和方法(转)
一.python中类和对象的概念 首先,我们先来说说什么是类.看了很多关于python类的介绍,大多都介绍如何使用,但是对于概念却一笔带过,一个初学编程的小伙伴很难理解. 概括的说:类可以比作是某种类 ...
- java程序的类体由两部分组成,Java程序中每个类的定义由类头定义、类体定义两部分组成,其中类体部分包括属性和____. (10....
在新饭店上市初期,把客房的价格定得很高,这种价格策略是(). A.满意定价策略 B.渗透定价策略 C.撇脂定价策略 D.声望定价策略 1297.( )在列管式换热器中,当热流体为饱和状态时,流体的逆流 ...
最新文章
- 漫话:如何给女朋友解释什么是 Git 和 GitHub?
- 进击的Android Hook 注入术《四》
- SAP Spartacus里使用Observable访问Component数据
- 实验 3 检查点和参数化实验报告--软件功能测试与性能测试实验
- 【渝粤题库】国家开放大学2021春1708农业产业发展规划题目
- etag java_你知道HTTP协议的ETag是干什么的吗?
- 杰富瑞主管:若BTC回落,将增加养老基金投资组合中的加密货币成分
- 猪肉新鲜度光谱特征指数构建及敏感性分析
- 在 Mac 中 使用 Safari 常出现「此网页正使用大量内存...」如何修复?
- java 字符流异常处理_IO字符流9jdk7和jdk9中流的异常的处理
- TinyPXE网络启动,打造无盘工作站
- 基于MS强度或计数的数据依赖法非标记定量蛋白质组学的蛋白质互作分析(一)
- cocos2dx[3.x](11)——拖尾渐隐效果MotionStreak
- 悬赏任务源码系统带app小程序源码基于php开源版
- windows 10 时间同步,时间显示不准自动校准。
- ESP8266基于MicroPython的TCP socket回调函数实现案例
- 北航计算机网络安全,李舟军
- luckysheet导出excel表格(使用exceljs,支持图片)
- php配置Apache(Windows)
- C语言函数指针调用函数
热门文章
- CCNP实验【静态出接口配置】
- 流量暴增,掌门教育如何基于 Spring Cloud Alibaba 构建微服务体系?
- Knative 实战:基于 Kafka 实现消息推送
- 循环链表C/C++实现(数据结构严蔚敏版)
- php 按 截取字符串,PHP按符号截取字符串的指定部分
- python关键字匹配_关于python:在遇到某个关键字后匹配值的正则表达式
- 图像降噪算法——DnCNN / FFDNet / CBDNet / RIDNet / PMRID / SID
- 图像降噪算法——非局部均值降噪算法
- 相机标定获得内参矩阵及其他参数
- 学习速率 learning rate