首页 新闻 会员 周边 捐助

动态计算【动态编译】

0
悬赏园豆:10 [已关闭问题] 关闭于 2012-07-19 11:39
应用场景:        各种传感器的原生数据的转换。
        A传感器采集到的数据是1000,B传感器采集到的数据2500,C。。。如何让程序自动进行转换,并且不改变代码。

解决方法:
        存储过程:通过存储过程来进行计算。此方案坚决否定,原因是,不能与数据库耦合,如果更换数据库,是不是意味着存储过程重写或者程序直接无法处理?
        脚本:此方案我见人用过,脚本直接写在数据库里进行存储,编程语言是C++的。我目前的想法就是这种方工。

通过脚本处理此问题的大致想法:
1.编写一个类模板,包括一个函数体,但是函数体为空。例如:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
using System;
//using System.Math;
 
interface IProcessor
{
     decimal Process(int value);
}
 
public class SensorProcessor:IProcessor
{
    public decimal Process(int value)
    {
        decimal newValue = 0M;
        //此处可嵌入处理逻辑
        return newValue;
    }
}
2.编写一个处理函数的函数体。此处需根据传感器的说明书来进行实际的编写。
3.动态编译,检测编写的函数是否有语法错误,如无错误,进行缓存,比如温度的 SensorCache["temp"+"SensorProcessor"] = SensorProcessorEntity as IProcessor;
4.使用时,从缓存中取出,调用接口的Process方法。

以上是我的大致的想法,但是总感觉有地方不对,大家各抒己见,谢谢。
哑吧湖大水怪的主页 哑吧湖大水怪 | 初学一级 | 园豆:13
提问于:2012-05-28 17:21
< >
分享
所有回答(1)
0

框架貌似没问题

牧羊人361 | 园豆:211 (菜鸟二级) | 2019-09-03 18:19

这都7年前的提问,我自己早忘了,谢谢提醒。这个方案可行,再加一个DefaultProcessor。 我现在用的方案是直接配置计算公式,动态编译执行。

支持(0) 反对(0) 哑吧湖大水怪 | 园豆:13 (初学一级) | 2019-09-04 15:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册