【发布时间】:2011-04-13 22:06:23
【问题描述】:
我正在寻找 ASP.NET 的 System.Web.UI.DataBinder.Eval() 的快速版本是否存在? 理想情况下,可以编译为 Func 的东西,我可以缓存并稍后调用,例如:
Func<object,string> expr = CompileDataBinder(typeof(Model), "model.PocoProperty.Name");
string propertyName = expr(model);
有人知道这样的野兽是否存在吗?
附:我没有使用 ASP.NET,希望它在普通 C# 中工作
【问题讨论】:
-
您目前是否因为经典的
Eval方法而遇到一些性能问题?如果是,你能解释你的场景,展示你正在使用的代码,评论你在执行负载测试时获得的结果,从而得出这个结论吗?如果不是,你为什么需要这个? -
因为我实际上关心性能,并且不想在我编译的模板中包含低效的执行路径。
-
@mythz,
Eval不是低效的。许多流量大的网站都在使用它。 -
我可以不用效率比等效的强类型转换 + 属性访问慢 300 倍。
-
@Darin 您的第一条评论令人沮丧地表现出我在处理 .NET 文化时每天面临的典型惯性。作为许多 NoSQL 论坛的成员,我可以说这不会发生在我必须证明我为什么要维护高性能系统的任何其他平台上。我很惊讶 172k 你是一个长期的 SO 用户,却没有意识到让 SO 使用起来如此愉快的主要原因之一(goo.gl/G85ehgoo.gl/fm9Zl)。我已经尝试阐明为什么它如此重要 github.com/mythz/ScalingDotNET 但却被置若罔闻,你的支持是典型而悲伤的。
标签: c# compilation eval expression