什么是.NET browser-wasm运行时中的MemoryView?

omhiaaxx  于 2023-04-22  发布在  .NET
关注(0)|答案(1)|浏览(194)

在.NET 7的新(非Blazor)browser-wasm运行时中,有JSImport属性用于与Javascript导入进行通信。支持许多.NET类型作为参数传递给Javascript函数。
如果你传递一个Span<>ArraySegment<>,那么你必须将它们封送为MemoryView,但我看不到任何文档来说明这实际上是什么。JS函数实际上接收了什么?它是类型化数组的 Package 器吗?

hc8w905p

hc8w905p1#

虽然没有文档,但我们可以在这里看到MemoryView的实现:https://github.com/dotnet/runtime/blob/8cb3bf89e4b28b66bf3b4e2957fd015bf925a787/src/mono/wasm/runtime/marshal.ts#L379
它的功能

  • 字节长度
  • 复制到
  • 长度
  • 切片
  • _unsafe_create_view

setslice的行为类似于TypedArray函数(特别是,slice创建了一个新的缓冲区。)_unsafe_create_view看起来像一个内部函数,但它是公开的,可以让您直接获得TypedArray,这会稍微更有效。

相关问题