c# - Blazor WebAssembly:将 Float32Array 从 javascript 发送到 .NET
问题描述
这是我的 JS:
window.testSendFloatArray = (obj) => {
var iterable = function* () { yield* [1, 2, 3, 4, 5, 6]; }();
var float32 = new Float32Array(iterable);
obj.invokeMethodAsync('SendFloatArray', float32);
}
这是 C#:
[JSInvokable]
public Task SendFloatArray(JsonElement wtf)
{
return Task.CompletedTask;
}
这就是我testSendFloatArray
从 C# 调用的方式:
await JSRuntime.InvokeVoidAsync("testSendFloatArray", DotNetObjectReference.Create(this));
我在所有地方都设置了断点,并且一切都正确连接,但是当SendFloatArray
被调用时,我不知道该怎么处理wtf
. 我知道它是 a 的唯一原因JsonElement
是因为我最初拥有它是 typeobject
并在其wtf.GetType().Name
上做了 a。
当我用它序列化值时,JsonSerializer.Serialize(wtf)
它返回:
{"0":1,"1":2,"2":3,"3":4,"4":5,"5":6}
玩了一个小时后,我发现我可以调用它EnumerateObject
(EnumerateArray
失败):
[JSInvokable]
public Task SendFloatArray(JsonElement wtf)
{
var myArray = wtf.EnumerateObject().Select(x => x.Value.GetDouble()).ToArray();
return Task.CompletedTask;
}
但是必须有更好的方法来做到这一点,对吗?如何从 Javascript 中干净地获取 C# 程序集的原语数组?
解决方案
推荐阅读
- android - 使用模拟器时 vs 代码出错(颤振)
- amazon-web-services - 注册 ServiceWorker 失败。脚本资源位于重定向后面,这是不允许的
- python - 如何使用胶水资源运行 python Shell 胶水作业?
- parsing - OCaml:将减去浮点数解析为计算器
- node.js - 连接到 docker mongo 容器的问题
- javascript - Date-fns——如果是当前年份则省略年份
- c++ - 在 wxWidgets 中从 WorkerThread 接收数据时 wxButtons 不可滚动
- django - 为什么我的 Django 托管在 Heroku 上这么慢?
- javascript - AG-GRID Angular:cellEditor 和 cellrenderer 之间是否有区别,调用 params.setValue()
- jsp - tomcat 8.5.43 org.eclipse.jdt.internal.compiler.classfmt.ClassFormatException