.net-core - FSharp 出现错误 : error FS0192 the anonymous record <>f__AnonymousType has not been generated in the pre-phase of generating this module

标签 .net-core f#

我第一次尝试使用匿名记录,但在编译时出现错误: 错误FS0192匿名记录<>f__AnonymousType在生成该模块的前期尚未生成

我在 xubuntu 上使用 Visual Studio 代码,并且在 IDE 中没有看到任何错误 - 所以至少 ionide 似乎接受它;我仅在尝试运行时收到错误

dotnet 版本= 2.1.603

有问题的代码:

let load<'a> connectionString schemaDef (selector:obj) =
    select<'a> connectionString schemaDef selector |> List.tryHead   


let validateToken (clientToken:ClientWebToken) = 
    let loadedToken = liteOrm.load<WebToken> connectionString WebToken.SchemaDef {| TokenGuid= clientToken.TokenGuid |}
    match loadedToken with

我可以通过传递键入的记录来解决这个问题:

type TokenGuid = {
    TokenGuid: Guid
}

let validateToken (clientToken:ClientWebToken) = 
    let loadedToken = liteOrm.load<WebToken> connectionString WebToken.SchemaDef { TokenGuid= clientToken.TokenGuid }
    match loadedToken with

或者通过显式声明匿名记录的结构(我不想这样做):

let load<'a> connectionString schemaDef (selector: {| TokenGuid: Guid |}) =
    select<'a> connectionString schemaDef selector |> List.tryHead   

我认为的问题是编译器无法推断适当的类型或将匿名记录转换为 obj。 有没有办法将匿名记录作为通用对象传递给方法,如果可以,参数应该是什么类型?

最佳答案

目前这是 bug用于将匿名记录传递给接受 obj 作为其输入参数的对象。这将得到修复。同时,我建议显式指定类型或使用类型推断而不是 obj 参数类型。

关于.net-core - FSharp 出现错误 : error FS0192 the anonymous record <>f__AnonymousType has not been generated in the pre-phase of generating this module,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55811052/

相关文章:

functional-programming - 正确理解F#预计算逻辑

f# - 有没有办法让记录继承 F# 中的抽象类?

vim - .net core 命令不为 omnisharp 生成解决方案文件

validation - 在 .NET Core 中使用公共(public)安全 key 配置 JWT Bearer token 验证

javascript - 如何从 JavaScript 运行 Razor 函数

asp.net-mvc - 在我们使用 JWT token 的情况下,Asp.net 核心中的 session 和应用程序变量(因此没有基于 cookie 的 session )

c# - 通过来自 c# net core 的非托管 c++ dll 订阅 Windows 消息

f# - 将元组输入到 printfn 等函数中

f# - 如何在 Rider 中使用 F# 创建 ASP.NET Core WebAPI 项目?

F# op_Equality 不同类型