我从降级的框架的版本4我的应用程序第4版,现在我想实现这个VB.NET lambda函数语句(在3.5作品)重写VB.NET Lambda表达式为C#声明
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(因为我们的用户只hae 3.5并且没有权限安装4.0)。当我这样做时,对“Microsoft.CSharp”的引用已被打破。
我可以使用C#3.5中有效的语法在C#中重写VB.NET命令吗?就像我能够在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();
}
您能告诉我们如何定义** ColumnItemValueAccessor **和** General_ItemValueAccessor **吗? – McGarnagle
当然。请参阅我的更新。谢谢。 – ChadD