Vérifié la fonte dans un arbre d'expression?

c# expression-trees

Question

J'utilise Expression pour créer un peu de code généré dynamiquement. Ma solution fonctionne, sauf pour une fonctionnalité: je souhaite effectuer une distribution de type vérifiée, où TypeCastException est levée si la distribution échoue.

J'ai trouvé Expression.TypeAs (), qui effectue la conversion de type, mais renvoie null, plutôt que de lancer, lorsque la conversion échoue.

Existe-t-il un moyen simple de faire une conversion de type contrôlée dans Expression? Ou dois-je vérifier la valeur null et lancer l'exception moi-même?

Voici ce que j'ai: -

ParameterExpression typedAttribute = Expression.Variable(attributeType, "typedAttribute");
ParameterExpression typedValue = Expression.Variable(valueType, "typedValue");

BlockExpression methodBlock = Expression.Block(new[] { typedAttribute, typedValue }, new Expression[]
   {
       Expression.Assign(typedAttribute, Expression.TypeAs(attribute, attributeType)),
       Expression.Assign(typedValue, Expression.TypeAs(value, valueType)),
       Expression.Call(visitor, methodInfo, typedAttribute, typedValue),
       Expression.Assign(visited, Expression.Constant(true)),
   });

Réponse acceptée

Expression.Convert devrait agir ici comme un casting.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi