アプリをフレームワークのバージョン 4 からバージョン 4 にダウングレードしたので、この VB.NET ラムダ関数ステートメント (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();
}