C#动态表达式计算(续2)
上两篇废话太多,这一次我就不多说了,由于代码比较简单,可以直接从https://github.com/scottshare/DynamicExpress.git地址下载。
以下说明一下使用方法:
DynamicExpress/动态表达式计算
作用
根据动态算法以及给定的对象计算并返回计算结果
用法
1.单个对象(single entity)
T MathDynamicExpress.Core.DynamicExpress.Eval<T>(string expression, object entity)
例如(ex):
MathDynamicExpress.Core.DynamicExpress.Eval<double>("({Field1}+{Field2})*{Field3}", new { Field1=txt_entity1_field1.Text, Field2 = txt_entity1_field2.Text, Field3 = txt_entity1_field3.Text });
2.多个对象(entities)
T MathDynamicExpress.Core.DynamicExpress.Eval<T>(string expression,params object[] entity)
例如(ex):
MathDynamicExpress.Core.DynamicExpress.Eval<double>("({0.Field1}-{1.Field1})+{1.Field2}*{0.Field2}",
new
{
Field1=txt_entity1_field1.Text,
Field2 = txt_entity1_field2.Text
},
new
{
Field1 = txt_entity2_field1.Text,
Field2 = txt_entity2_field2.Text
});
3.datatable
T MathDynamicExpress.Core.DynamicExpress.Eval<T>(string expression, object entity)
例如(ex):
MathDynamicExpress.Core.DynamicExpress.Eval<int>("{0:0}+{0:1}-{1:1}", datatable1);
format:"{col-index or col-name:row-index}"
目前项目中提供了JS Provider使用了开源的V8Engine,在项目中使用是需要在webconfig中配置对应的provider
<configSections>
<section name="dynamicExpressProvider" type="MathDynamicExpress.Core.DynamicExpressProviderSection, MathDynamicExpress.Core"/>
</configSections>
<dynamicExpressProvider defaultProvider="JsExpressBuilder">
<providers>
<add name="JsExpressBuilder" type="MathDynamicExpress.JSExpressBuilder,MathDynamicExpress"></add>
</providers>
</dynamicExpressProvider>
另外需要设置一下兼容性:
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
<supportedRuntime version="v2.0.50727"/>
</startup>
具体用法可以参考项目中提供的三个demo。
C#动态表达式计算(续2)的更多相关文章
- C#动态表达式计算(续1)
距上一帖近五天时间,让大家久等了,没想到关注这个话题的也不少人,正如有同志所说的想解决该问题其实是有太多的解决方法,比如动态构造类编译.调用vbscript或者可以采用javascript解析引擎或者 ...
- C#动态表达式计算
C#动态表达式计算 应该有不少人开发过程中遇到过这样的需求,我们直接看图说话: 如上图所示,其中Entity为实体类,其中包括五个属性,该五个属性的值分别来自于数据库查询结果: 用户通过可视化界面进行 ...
- 第6.4节 Python动态表达式计算:eval函数详述
在Python动态执行的函数中,eval是用于执行表达式计算的函数,这个函数用于执行字符串中包含的一个表达式或其编译后对应的代码,不能适用于执行Python语句和完整的代码. 一. 语法 1. ...
- .NET平台开源项目速览(8)Expression Evaluator表达式计算组件使用
在文章:这些.NET开源项目你知道吗?让.NET开源来得更加猛烈些吧!(第二辑)中,给大家初步介绍了一下Expression Evaluator验证组件.那里只是概述了一下,并没有对其使用和强大功能做 ...
- PHP 实现字符串表达式计算
什么是字符串表达式?即,将我们常见的表达式文本写到了字符串中,如:"$age >= 20",$age 的值是动态的整型变量. 什么是字符串表达式计算?即,我们需要一段程序来执 ...
- .NET 表达式计算:Expression Evaluator
Expression Evaluator 是一个轻量级的可以在运行时解析C#表达式的开源免费组件.表达式求值应该在很多地方使用,例如一些工资或者成本核算系统,就需要在后台动态配置计算表达式,从而进行计 ...
- WPF实现强大的动态公式计算
数据库可以定义表不同列之间的计算公式,进行自动公式计算,但如何实现行上的动态公式计算呢?行由于可以动态扩展,在某些应用场景下将能很好的解决实际问题. 1.VS2012新建一个WPF应用程序WpfApp ...
- C# - 二叉树表达式计算
很早以前就写过双栈的表达式计算. 这次因为想深入学一下二叉树,网上都是些老掉牙的关于二叉树的基本操作. 感觉如果就学那些概念,没意思也不好记忆.于是动手写了一个表达式计算的应用例子. 这样学习印象才深 ...
- 【Windows 10 应用开发】使用x:Bind标记动态获得计算结果
UWP 在传统(WPF)的Binding标记上引入了 Bind 标记,Bind 基于编译阶段生成,因而具有较高的性能.但是,你得注意,这个性能上的优化是免去了运行阶段动态绑定的开销,这是不包括数据源的 ...
随机推荐
- CentOS 7 下安装 LEMP 服务(nginx、MariaDB/MySQL 和 php)
原文 CentOS 7 下安装 LEMP 服务(nginx.MariaDB/MySQL 和 php) LEMP 组合包是一款日益流行的网站服务组合软件包,在许多生产环境中的核心网站服务上起着强有力的作 ...
- Swift中文手册 -- The Basics
原文:Swift中文手册 -- The Basics 基础部分 Swift 是 iOS 和 OS X 应用开发的一门新语言.然而,如果你有 C 或者 Objective-C 开发经验的话,你会发现 S ...
- Python美女[从新手到高手]--阅读"见个面问题 HashMap 储存方法"联想
今伯乐在线 上看到一篇文章.一道面试题看 HashMap 的存储方式.也就是问: 在 HashMap 中存放的一系列键值对,当中键为某个我们自己定义的类型.放入 HashMap 后,我们在外部把某一个 ...
- —软测试—(5)计算机系统CPU组成
事实上,我们不得不很早就接触到电脑系统的知识,但仍然会出现不起眼,现象清醒的认识,非常严重丢分. 要我们花功夫去理解,由于非常多东西我们接触不到,比方校验码.码制等.假设你不去理解而是去记,就非常难參 ...
- iOS程序 # 启动过程
[ App 应用 ] 中文名:缺省 外文名:default 拼音:quē shěng 释义:系统默认状态 全称:缺省状态 -------------- 1.程序启动顺序 1> main.m程序入 ...
- C--控制语句循环例子
C的三种循环while.for和do while 先说一下scanf()函数的返回值问题 当scanf("%d,%d",&a,&b);如果用户正确输入了俩个整形变 ...
- J2EE之验证码实现
package cn.itcast.response; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; i ...
- BAT 特殊符号总结
原文:BAT 特殊符号总结 BAT特殊符号总结,用好特殊符号,利用提高开发效率.^ 转义符 用在特殊符号之前 比如: echo 非常^&批处理 如果不加^ 那么"批处理"将 ...
- IplImage 封装释放
IplImage是openCV库中非常重要的一个结构体,库中的图像都是保存为这个结构体后再进行操作的,详细结构例如以下: </pre><pre> typedef struct ...
- Asp.Net MVC4 + Oracle + EasyUI + Bootstrap
Asp.Net MVC4 + Oracle + EasyUI + Bootstrap --操作数据和验证 本文链接:http://www.cnblogs.com/likeli/p/4234238.ht ...