我第一次尝试使用匿名记录,但在编译时出现错误: 错误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/