在 C# 中,可以分配公共成员来代替构造函数调用:
options.TokenValidationParameters = new TokenValidationParameters { NameClaimType = "preferred_username" }
Run Code Online (Sandbox Code Playgroud)
为了达到同样的效果,我编写了以下 F# 代码:
options.TokenValidationParameters <- (new TokenValidationParameters()) |> fun it -> (it.NameClaimType <- "preferred_username"; it)
Run Code Online (Sandbox Code Playgroud)
然而它看起来一点也不好看。
有没有更好的方法来做到这一点?apply理想的解决方案可能是像kotlin 中那样的函数?
任何帮助表示赞赏。
正如评论中提到的,您可以使用对象初始化语法指定参数:
options.TokenValidationParameters <-
new TokenValidationParameters( NameClaimType = "preferred_username")
Run Code Online (Sandbox Code Playgroud)
以上绝对是做到这一点的最佳方法。但即使您需要更复杂的逻辑,也没有必要使用笨拙的管道和fun构造在一行上构造对象。仅仅定义一个局部变量并没有什么问题:
let tokParams = new TokenValidationParameters()
tokParams.NameClaimType <- "preferred_username"
options.TokenValidationParameters <- tokParams
Run Code Online (Sandbox Code Playgroud)
如果你想限制变量的范围tokParams,你可以这样做:
options.TokenValidationParameters <-
let tokParams = new TokenValidationParameters()
tokParams.NameClaimType <- "preferred_username"
tokParams
Run Code Online (Sandbox Code Playgroud)
这也有效,因为 F# 块被视为表达式。在这种特殊情况下,您不需要这样做,但了解一下可能会有好处 - 它可以让您避免尴尬的管道。
| 归档时间: |
|
| 查看次数: |
103 次 |
| 最近记录: |