Не удается преобразовать анонимный тип в дерево выражений, поскольку он содержит поле, которое было использовано в инициализации другого поля
Обновлен: Ноябрь 2007
Cannot convert anonymous type to expression tree because it contains a field that is used in the initialization of another field
Компилятор не принимает преобразование анонимных типов к дереву выражений, если одно свойство анонимного типа используется для инициализации другого свойства анонимного типа. Например, в следующем примере, 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
Идентификатор ошибки: BC36548
Чтобы исправить эту ошибку
Присвойте начальное значение для локальной переменной Prop1. Присвойте начальные значения обеим переменным (Prop1 и Prop2), как показано в следующем коде.
Sub Main() Dim temp = 2 ExpressionExample(Function() New With {.Prop1 = temp, .Prop2 = temp}) End Sub
См. также
Задачи
Практическое руководство. Использование деревьев выражений для построения динамических запросов