型のプロパティは別のプロパティを初期化するために使用されるため、匿名型を式のツリーに変換することはできません。
更新 : 2007 年 11 月
コンパイラは、匿名型の 1 つのプロパティが匿名型の別のプロパティの初期化に使用されるときに、匿名型を式のツリーに変換する操作を受け入れません。たとえば、次のコードでは、Prop1 を初期化リストで宣言し、Prop2 の初期値として使用します。
Module M2
Sub ExpressionExample(Of T)(ByVal x As Expressions.Expression(Of Func(Of T)))
End Sub
Sub Main()
' The following line causes the error.
' ExpressionExample(Function() New With {.Prop1 = 2, .Prop2 = .Prop1})
End Sub
End Module
エラー ID: BC36548
このエラーを解決するには
Prop1 の初期値をローカル変数に割り当てます。次のコード例に示すように、この変数を Prop1 と Prop2 の両方に割り当てます。
Sub Main() Dim temp = 2 ExpressionExample(Function() New With {.Prop1 = temp, .Prop2 = temp}) End Sub