我将我的应用程序从框架的第 4 版降级到第 4 版,现在我想实现这个 VB.NET lambda 函数语句(适用于 3.5)
Dim colLambda As ColumnItemValueAccessor = Function(rowItem As Object) General_ItemValueAccessor(rowItem, colName)
并用 C# 重写它。这是我的尝试:
ColumnItemValueAccessor colLambda = (object rowItem) => General_ItemValueAccessor(rowItem, colName);
当我这样做时,我收到以下错误:
Error 14 One or more types required to compile a dynamic expression cannot be found. Are you missing references to Microsoft.CSharp.dll and System.Core.dll? C:\Source\DotNet\SqlSmoke\SqlSmoke\UserControls\ScriptUserControl.cs 84 73 SqlSmoke
但是,当我将应用程序从框架的 4.0 版本降级到 3.5 时(因为我们的用户只有 3.5 并且无权安装 4.0)。当我这样做时,对“Microsoft.CSharp”的引用被破坏了。
我可以像在 VB.NET 中那样使用在 C# 3.5 中有效的语法在 C# 中重写 VB.NET 命令吗?语法是什么?
我在想,如果我想继续使用 3.5,这是必须的,那么我必须在 VB.NET 中编写这段代码,因为看起来 C# 在 VB 之后有了这个功能。
namespace BinaryComponents.SuperList
{
public delegate object ColumnItemValueAccessor(object rowItem);
}
private object General_ItemValueAccessor(DataRow rowItem, object colName)
{
DataRow rowPerson = (DataRow)rowItem;
return rowPerson[colName.ToString()].ToString();
}