zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    欧拉公式
    isap的一些想法
    错误合集
    Hello World
    PAT (Advanced Level) Practice 1068 Find More Coins
    PAT (Advanced Level) 1087 All Roads Lead to Rome
    PAT (Advanced Level) 1075 PAT Judge
    PAT (Advanced Level) 1067 Sort with Swap(0, i)
    PAT (Advanced Level) 1017 Queueing at Bank
    PAT (Advanced Level) 1025 PAT Ranking
  • 原文地址:https://www.cnblogs.com/hohoo/p/3817523.html
Copyright © 2011-2022 走看看