在表达式树中检查了类型转换?
我正在使用Expression来创建一些动态生成的代码。 我的解决方案有效,除了一个function:我想做一个检查类型转换,如果转换失败,则抛出TypeCastException。
我找到了Expression.TypeAs(),它执行类型转换,但是当转换失败时它返回null而不是throw。
是否有一种简单的方法可以在Expression中执行检查类型转换? 或者我是否必须检查null并自己抛出exception?
这就是我所拥有的: –
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)), });
Expression.Convert
应该在这里扮演一个角色。