Я пытаюсь использовать Anonymous Records в первый раз, но получаю сообщение об ошибке при компиляции:
ошибка FS0192: анонимная запись <> f__AnonymousType не была сгенерирована на предварительной фазе создания этого модуля
Я использую визуальный студийный код на xubuntu и не вижу никаких ошибок в 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.
Есть ли способ передать анонимную запись как универсальный объект методу, и если да, то каким типом должен быть параметр?