Ale*_*lex 5 c# expression expression-trees c#-8.0
考虑 AutoMapper 中的以下代码
CreateMap<ViewModel, ServiceModel>()
.ForMember(
x => x.Type,
opt => opt.MapFrom(y =>
y.TypeName switch
{
"FirstName" => typeof(FirstModel),
"SecondName" => typeof(SecondModel),
_ => null
}));
Run Code Online (Sandbox Code Playgroud)
我有几种不同的情况,我想为每个字符串返回特定类型。
编译器不同意:
表达式树不能包含 switch 表达式。
这是为什么?我希望这个功能(在内部被巧妙地称为表达式)执行Expression.Switch,因此应该可以在表达式树中使用。
我知道我可以用三元运算符语法替换。我想了解为什么它不起作用。
编辑
感谢Sweeper指出这实际上不是一个 switch 表达式。我想我是被带上了会议列车并被名字愚弄了。
Ivan Stoev我知道它不受支持,但我很好奇为什么。我理解为什么不支持块作用域,但 switch case 本质上非常简单且具有声明性,这非常适合表达式树。
编辑 2 感谢下面的Jeroen Mostert评论,我现在了解到 switch case 内部远非简单,因此它在表达式树中没有位置。
| 归档时间: |
|
| 查看次数: |
3475 次 |
| 最近记录: |