Blazor 在将 TypedArrays 传递给 JavaScript 时,不会正确地进行序列化和反序列化,导致在传递 TypedArrays 时出现问题。一种解决方法是使用 Uint8Array 代替 TypedArray,因为它会正确地进行序列化和反序列化:
// 将 TypedArray 转换为 Uint8Array
Uint8Array arr = new Uint8Array(typedArray);
// 将 Uint8Array 转换为 TypedArray
TypedArray tArr = new Uint8Array(myArray).As();
如果您需要在 C# 和 JavaScript 之间频繁传递 TypedArrays,则可以考虑使用 JavaScript Interop 库来手动将 TypedArray 转换为 ArrayBuffer。在 C# 中,您可以使用以下代码将 TypedArray 转换为 ArrayBuffer:
// 将 TypedArray 转换为 ArrayBuffer
ArrayBuffer buffer = Module.Runtime.GetArrayBufferFromJSObject(typedArray);
在 JavaScript 中,您可以使用以下代码将 ArrayBuffer 转换为 TypedArray:
// 将 ArrayBuffer 转换为 TypedArray
let typedArray = new Uint8Array(arrayBuffer);