Какой тип объекта DotNet.invokeMethod передает в методе c #? - PullRequest
0 голосов
/ 02 мая 2019

Я использую Blazor (3.0.0-preview4) и пытаюсь передать объект из javascript через DotNet.invokeMethod.Я проверил этот способ, и он успешно пропускает простые типы (strings, int).Но если я передаю объект JS, я получаю странный тип объекта enter image description here Я могу записать его в Console.WriteLine, он выглядит как JSON, но не строка. enter image description here

Так что я ничего не могу сделать с этим, я даже не могу разобрать это, и нет никакой информации о сборке SimpleJson от Microsoft.Как я могу иметь дело с этим типом?

Заранее спасибо.

Пример кода Blazor:

    [JSInvokable]
    public static void SetPlayerState(object[] args)
    {
        Console.WriteLine(args[0]);
        Console.WriteLine(args[0].GetType().Name);
    }

JS:

  window.cInvoke = (methodName, json) => {
    DotNet.invokeMethod("ui", methodName, JSON.parse(json));
  };

Ответы [ 2 ]

1 голос
/ 02 мая 2019

DotNet.InvokeMethod отправит строку JSON, как вы видите в журнале консоли WASM, в ваш метод JSInvokable на странице Blazor .razor.

Чтобы десериализовать ее на странице Blazor, используйте

[JSInvokable]
public static void SetPlayerState(string msg)
{
    var deserialized = Microsoft.JSInterop.Json.Deserialize<myobject>(msg);
}
0 голосов
/ 02 мая 2019

Я обнаружил, что Blazor использует эту библиотеку

Благодаря этому ответу
Похожие проблемы

...