我正在尝试首次使用匿名记录,但是在编译时出现错误: 错误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。 有什么方法可以将匿名记录作为通用对象传递给方法,如果可以,则参数应为哪种类型?