编辑:我找到了答案(在 Tejs 的帮助下);见下文。
我正在使用 HTML/Javascript 以及一些基于 C# 的帮助程序库开发 Metro 应用程序。一般来说,我在从 Javascript 调用 C# 方法方面取得了很大的成功,但我似乎无法让传递数组(在我的特定情况下,字符串数组)工作。传递单个字符串没有问题。
我的代码是这样的:
// in javascript project
var string1 = ...;
var string2 = ...;
var string3 = ...;
var result = MyLibrary.MyNamespace.MyClass.foo([string1, string2, string3]);
然后,在 C# 中:
// in C# project
public sealed class MyClass {
public static string Foo(string[] strings) {
// do stuff...
}
}
问题是方法“Foo”得到了一个长度正确的数组(所以在上面的例子中,3),但所有的元素都是空的。我也试过这个:
public static string Foo(object[] strings) {
...
这也不起作用 - 同样,数组的大小是正确的,但所有元素都是空的。
我试过传递字符串文字,字符串变量,在javascript中使用“new Array(...)”,将“Foo”的签名更改为“params string[]”和“params object[]”,都无济于事.
由于传递单个字符串工作正常,我可能可以通过一些黑客来解决这个问题......但看起来这确实应该工作。对我来说,数组以正确的大小传入似乎真的很奇怪(即,无论做什么封送处理都知道有关 javascript 数组结构的某些信息),但内容却没有被填充。