当 IEnumerable<MyClass<T>> 传递给 JSRuntime.InvokeAsync 且 T 不是字符串时,为什么 JSRuntime.InvokeAsync 会失败?

Jud*_*her 5 javascript asp.net blazor blazor-client-side

在客户端运行最新的 Blazor 预览版时,我有一个应用程序加载一个IEnumerable<MyClass<T>> data简单的泛型类:

public class MyClass<T>
{
    public string ID { get; set; }

    public T Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我通过这个IEnumerable喜欢JSRuntime.InvokeAsync这样:

await JSRuntime.InvokeAsync<object>("renderChart", data);

当 T 为 type 时string,这将按预期工作。当 T 为类型doublefloat失败并出现错误时:

WASM: System.InvalidCastException: Specified cast is not valid.    
WASM:   at System.Text.Json.ReflectionMemberAccessor+<>c__DisplayClass11_0`2[TClass,TProperty].<CreatePropertyGetter>b__0 (System.Object obj) <0x2951800 + 0x0000c> in <e1cfca862e6a44dbaac6737c11b98f37>:0`
Run Code Online (Sandbox Code Playgroud)

JavaScript 函数只是记录值:

function renderChart(data) {
    console.log("Data:", data);
}
Run Code Online (Sandbox Code Playgroud)

这是怎么回事?