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

时间:2019-08-06 16:14:51

标签: 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; }
}

我将此IEnumerable传递给JSRuntime.InvokeAsync就像这样:

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

当T为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`

JavaScript函数只记录值:

function renderChart(data) {
    console.log("Data:", data);
}

这是怎么了?

0 个答案:

没有答案