1

我正在尝试评估存储在数据库中的表达式,即

"if (Q1 ==2) {result = 3.1;} elseif (Q1 ==3){result=4.1;} else result = 5.9;"

我没有自己解析它,而是尝试使用 DLR。我正在使用 Codeplex 存储库中的 .92 版本,我的解决方案是 .NET 3.5 网站;我在 System.Core 和 Microsoft.Scripting.ExtenstionAttribute .dll 之间存在冲突。

Error =
{
  Description: "'ExtensionAttribute' is ambiguous in the namespace 'System.Runtime.CompilerServices'.", 
  File: "InternalXmlHelper.vb"
}

目前,我无法升级到 .NET 4.0 并大量使用 .net 3.5 功能(因此不能选择降级)。

非常感谢任何帮助。

4

2 回答 2

1

解决方案是在 System.Core.dll 中输入正向 ExtensionAttribte。我们制作了这个程序集的 3 个不同版本(针对我们发布的带有各种 IronPython 版本的 3 个不同版本),并在 IronPython 的 CodePlex 站点上的这个 bug上附加到它们。

您需要下载它们并检查它们的版本并替换与您正在使用的 CodePlex 版本中的版本匹配的版本。

于 2010-04-15T03:07:32.363 回答
0

我现在可能正在思考复杂的问题,并且存在更简单的解决方案,但这作为一种可能性跳进了我的脑海;

您是否考虑过使用 CodeDom 构建一个运行时类,实例化一个,在其上执行一个方法(以表达式作为其实现,这更像是代码片段而不是纯表达式),然后从该类中检索“结果”值例如通过公共财产?

于 2010-04-14T20:03:22.887 回答