Partilhar via


Não é possível converter tipo anônimo em árvore de expressão porque ele contém um campo que é usado na inicialização de outro campo

O compilador não aceita conversão de um anônimo em um árvore de expressão quando uma propriedade do tipo anônimo é usada para inicializar outra propriedade do tipo anônimo.Por exemplo, no código a seguir, Prop1 é declarado na lista de inicialização e, em seguida, usado como o valor inicial para 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 de erro: BC36548

Para corrigir este erro

  • Atribua o valor inicial para Prop1 a uma variável local.Atribuir a variável a ambos Prop1 e Prop2, conforme mostrado no seguinte código.

    Sub Main()
    
        Dim temp = 2
        ExpressionExample(Function() New With {.Prop1 = temp, .Prop2 = temp})
    
    End Sub
    

Consulte também

Tarefas

Como: Usar árvores de Expressãosão para consultas Compilação dinâmico

Conceitos

Tipos anônimos

Árvores de expressão em LINQ