我正在尝试评估存储在数据库中的表达式,即
"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功能(因此降级不是一种选择)。
非常感谢任何帮助。
答案 0 :(得分:1)
解决方案是将ExtensionAttribte键入System.Core.dll。我们已经为这个程序集制作了3个不同的版本(我们已经发布了3个与各种IronPython版本不同的版本),并在IronPython的CodePlex网站的this bug上附加了它们。
您需要下载它们并检查它们上的版本,并替换与您正在使用的CodePlex版本中的版本相匹配的版本。
答案 1 :(得分:0)
我现在可能会进行复杂的思考,并且存在更简单的解决方案,但这种可能性在我脑海中浮现;
您是否考虑使用CodeDom构建运行时类,实例化一个,在其上执行一个方法(表达式作为其实现,更像是代码片段而不是纯表达式),然后检索“结果”值从该类实例通过公共财产?