Impossibile convertire il tipo anonimo in una struttura ad albero dell'espressione. Il tipo anonimo contiene un campo utilizzato nell'inizializzazione di un altro campo.

Aggiornamento: novembre 2007

Cannot convert anonymous type to expression tree because it contains a field that is used in the initialization of another field

Il compilatore non accetta la conversione di un tipo anonimo in una struttura ad albero dell'espressione quando una proprietà del tipo anonimo è utilizzata per inizializzare un'altra proprietà del tipo anonimo. Nel codice riportato di seguito, ad esempio, Prop1 viene dichiarato nell'elenco di inizializzazione e quindi utilizzato come valore iniziale per 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 errore: BC36548

Per correggere l'errore

  • Assegnare il valore iniziale per Prop1 a una variabile locale. Assegnare la variabile a Prop1 e Prop2, come mostrato nel codice seguente.

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

Vedere anche

Attività

Procedura: utilizzare strutture ad albero dell'espressione per la compilazione di query dinamiche

Concetti

Tipi anonimi

Strutture ad albero dell'espressione in LINQ