我需要让我的用户能够定义将根据数据计算值的公式。例如
//Example 1
return GetMonetaryAmountFromDatabase("Amount due") * 1.2;
//Example 2
return GetMonetaryAmountFromDatabase("Amount due") * GetFactorFromDatabase("Discount");
我将需要允许 / * + - 操作,还需要分配局部变量并执行 IF 语句,就像这样
var amountDue = GetMonetaryAmountFromDatabase("Amount due");
if (amountDue > 100000) return amountDue * 0.75;
if (amountDue > 50000) return amountDue * 0.9;
return amountDue;
场景很复杂,因为我有以下结构..
- 客户(几百)
- 配置(每位客户约10个)
- 项目(每个客户配置约 10,000 个)
所以我将执行一个 3 级循环。在每个“配置”级别,我将启动一个数据库事务并编译论坛,每个“项目”将使用相同的事务 + 编译公式(每个配置大约有 20 个公式,每个项目将使用所有公式)。
这使事情变得更加复杂,因为我不能只使用编译器服务,因为它会导致内存使用量持续增长。我不能为每个“配置”循环级别使用一个新的 AppDomain,因为我需要传递的一些引用无法编组。
有什么建议么?
--更新--这就是我的选择,谢谢! http://www.codeproject.com/Articles/53611/Embedding-IronPython-in-aC-Application