将数组传递给 blazors IJSRuntime.InvokeAsync

Passing Arrays to blazors IJSRuntime.InvokeAsync

我想知道将数组传递给 IJSRuntime.InvokeAsync 的最佳方法是什么。
我偶然发现的问题是 blazor 会将数组的每个元素作为参数传递给 javascript 函数,因为 InvokeAsync 有一个开放的参数列表,并且不知道您是否只是传递了相同类型的参数或数组。

现在我只使用第二个参数,例如 InvokeAsync("functionname", array, false)

还有其他建议吗?更好的解决方案?

您要么必须将数组转换为 object*,要么直接调用扩展方法:

var array = Array.Empty<Baz>();
// Casting to object
JS.InvokeAsync<Foo>("bar", (object)array);

// Explicitly call the extension method:
JSRuntimeExtensions.InvokeAsync<Foo>(JS, "bar", array);

或者只使用它认为您正在尝试调用的重载:

JS.InvokeAsync<Foo>("bar", new object[] { array });

* 基于我对 C#'s Overload Resolution 的有限了解。