gpt4 book ai didi

.net - 具有 C# 7 模式匹配的 Expression.SwitchCase

转载 作者:行者123 更新时间:2023-12-01 13:29:49 24 4
gpt4 key购买 nike

我想在 C# 中动态构建一个表示此代码的 Expression 树:

switch (x)
{
case A1 cx: Handle(cx); break;
case A2 cx: Handle(cx); break;
}

到目前为止,我有这样的东西:

Expression.Switch(xParameterExpression,
Expression.SwitchCase(
method1CallExpression, /* test value expression - what to put here ?? */),
Expression.SwitchCase(
method2CallExpression, /* test value expression - what to put here ?? */));

我也可以使用 Expression.TypeAs 但它似乎不起作用。我怀疑我需要一个类似于 if (x is A1 cx) { } 条件表达式而不是 var cx = x as A1;

我知道这些是 C# 7.0 的新功能,但想知道是否所有新语言功能都添加到表达式中?

最佳答案

此时,表达式树不支持任何 C# 7.0 功能。您会发现许多编译器 Pull Requests 明确 handle this (如果您尝试过,请生成诊断结果)。

如果这对您很重要,我建议您在 Roslyn 存储库上提交问题(我找不到现有的)并获得一些支持。

关于.net - 具有 C# 7 模式匹配的 Expression.SwitchCase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46533824/

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