Приведение динамического типа в C # к F # - PullRequest
0 голосов
/ 17 февраля 2019

Я работаю с документацией Auth0 здесь и портирую код C # на F #

В коде C # есть эта строка:

var auth0LoginResult = await _auth0Client.LoginAsync(new { audience = AuthenticationConfig.Audience });

Где LoginAsyncПараметр называется extraParameters типа object.

Аудитория - это просто строка, но когда я пытаюсь передать строку, подобную этой,

let extraParameters = Support.authenticationConfig.Audience
let result = client.LoginAsync(extraParameters).Result

, происходит сбой с

System.Reflection.TargetParameterCountException: Количество указанных параметров не соответствует ожидаемому числу.

Как передать тип, который нравится методу?Просто наложить его на объект?

1 Ответ

0 голосов
/ 17 февраля 2019

Я полагаю, что библиотека берет object и использует отражение, чтобы посмотреть на членов объекта, поэтому способ вызова C # состоит в том, чтобы предоставить ей анонимный объект в качестве аргумента.

В F # вам, вероятно, нужно определить явный тип записи с параметрами, которые нужно передать в виде полей, хотя в ближайшем будущем вы, вероятно, сможете использовать анонимные записи для этой .

Я не проверял это, но я бы попробовал что-то вроде этого:

type LoginParameters = { audience : string }

async { 
  let! result = 
    auth0Client.LoginAsync({ audience = AuthenticationConfig.Audience }) 
    |> Async.AwaitTask
  (...) }
...