FSharp ошибка получения: ошибка FS0192 анонимная запись <> f__AnonymousType не была сгенерирована на предварительной фазе создания этого модуля - PullRequest
2 голосов
/ 23 апреля 2019

Я пытаюсь использовать 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. Есть ли способ передать анонимную запись как универсальный объект методу, и если да, то каким типом должен быть параметр?

1 Ответ

3 голосов
/ 23 апреля 2019

В настоящее время это ошибка для передачи анонимной записи чему-либо, принимающему obj в качестве входного параметра.Это будет исправлено.А пока я рекомендую указывать тип явно или использовать вывод типа, а не obj тип параметра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...