gpt4 book ai didi

c# - 检查表达式树中的类型转换?

转载 作者:可可西里 更新时间:2023-11-01 08:42:40 27 4
gpt4 key购买 nike

我正在使用 Expression 创建一些动态生成的代码。我的解决方案有效,除了一个功能:我想做一个检查类型转换,如果转换失败则抛出 TypeCastException。

我找到了 Expression.TypeAs(),它执行类型转换,但在转换失败时它返回 null,而不是抛出异常。

有没有一种简单的方法可以在 Expression 中进行检查类型转换?还是我必须自己检查 null 并抛出异常?

这是我所拥有的:-

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 应在此处充当转换。

关于c# - 检查表达式树中的类型转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6489845/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com