【发布时间】:2014-01-26 13:32:55
【问题描述】:
我正在为一些金融产品建模,每种产品都有自己的定价公式。 在应用程序中,我想允许最终用户使用公式创建自己的产品。我的应用程序可以使用这个公式来为产品定价。
类似:
Formula as string = "f(x) = x * 2"
Dim Result as double = call(Formula, 1)
我知道这在 Matlab 中是可能的:
f="@(x)(x*2)";
Result = feval(f,1);
我在 Matlab 中编写了一个实现此功能的类,并将其集成到 VB.Net 项目中,但是每个函数的执行时间是直接用 VB.Net 编写的相同函数的 4700 倍,这对于业务需求来说是负担不起的。
这在 .Net 中可行吗?
【问题讨论】:
-
您可以查看DynamicMethod Class,但它可能比您想要的更多。几年前,我对客户有类似的需求,发现他们在大约 80% 的时间里一遍又一遍地使用相同的函数集,只是使用不同的参数。我最终构建了一组,然后让他们按名称选择一个公式并指定 arg 值。然后使用 CASE 语句将参数发送到正确的函数。 NET 可能有更清洁的方式。
-
其实这是我要避免的:Case语句,因为每次需要可能涉及完全不同的公式...
-
如果他们用VB.NET编写函数会怎样(Express版是免费的)?他们可以生成一个类库,然后告诉你使用它。