Impossible de convertir le type anonyme en arborescence de l'expression, car elle contient un champ qui sert à initialiser un autre champ

Le compilateur n'accepte pas la conversion d'un type anonyme en arborescence de l'expression lorsqu'une propriété du type anonyme est utilisée pour initialiser une autre propriété du type anonyme. Par exemple, dans le code suivant, Prop1 est déclaré dans la liste d'initialisation, puis utilisé comme valeur initiale pour 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 d'erreur : BC36548

Pour corriger cette erreur

  • Assignez la valeur initiale pour Prop1 à une variable locale. Assignez cette variable à Prop1 et à Prop2, comme indiqué dans le code suivant.

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

Voir aussi

Tâches

Comment : utiliser des arborescences d'expression pour générer des requêtes dynamiques (C# et Visual Basic)

Concepts

Types anonymes (Visual Basic)

Arborescences d'expression (C# et Visual Basic)