可以这样做吗?
以下是不起作用的片段,但例外情况失败:
function SendBytesJS() {
var control1 = document.getElementById('sl1');
bytes = new Array(1, 2, 3);
control1.Content.MainPage.SendBytesSL(bytes);
}
和
public partial class MainPage : UserControl
{
public MainPage()
{
InitializeComponent();
System.Windows.Browser.HtmlPage.RegisterScriptableObject("MainPage", this);
}
[System.Windows.Browser.ScriptableMember]
public void SendBytesSL(byte[] bytes)
{
// never gets here
}
}
答案 0 :(得分:0)
HTML桥接器不支持字节数组,Javascript只能理解整数和浮点数(实际上是双倍)。
数组作为object[]
传递,数字始终作为double
传递。因此,您的代码需要看起来更像以下内容: -
// Warning untested code
[ScriptableMember]
public void SendBytesSL(object[] arrayIn)
{
byte[] bytes = arrayIn.Select(o => Convert.ToByte(o)).ToArray();
}