在 JScript.NET 中强制使用特定的 .NET 类型?

Forcing specific .NET types in JScript.NET?

我正在使用 Fiddler 网络调试器,它使用基于 JScript.NET 的 FiddlerScript。我正在尝试进行一些简单的 .NET 字符串解析,但它失败并出现错误“不止一种方法或 属性 匹配此参数列表 ”。例如:

        var ahraw: String = "one, two, three, four";
        var ah: Array = ahraw.Split([',', ' '], System.StringSplitOptions.RemoveEmptyEntries);
        for (var i in ah) {
            FiddlerObject.alert("\"" + ah[i] + "\"");
        }

String.Split 有这些原型:

Split(Char[], Int32, StringSplitOptions)
Split(String[], Int32, StringSplitOptions)
Split(String[], StringSplitOptions)
Split(Char[], StringSplitOptions)
Split(Char[], Int32)
Split(Char[])

即使我添加一个 Int32 和 运行 它像 ahraw.Split([',', ' '], 99, System.StringSplitOptions.RemoveEmptyEntries);ahraw.Split(", ", 99, System.StringSplitOptions.RemoveEmptyEntries); 它仍然找到多个方法。是否可以强制使用特定的 .NET 类型? var sep: String 之类的东西也不起作用。

当然还有其他方法可以在 JScript 中拆分字符串,例如 split()(注意小写的 s)。当我需要调用的函数没有 javascript 等效项时,我更感兴趣的是如何解决这个问题,因此我必须调用 .NET 函数。

如评论中所述,如今仅使用 C# 作为脚本语言可能会更容易(可以在 Tools -> Options -> Scripting -> Language 中设置)。

如果您 have/want 坚持使用 JScript.NET(例如,如果您已经有复杂的定制),您可以通过为分隔符声明 typed array 来解决这个问题,否则编译器无法区分调用 Split(String[], StringSplitOptions)Split(Char[], StringSplitOptions) 重载中的哪一个。

    var ahraw: String = "one, two, three, four";
    var separators: Char[] = [',', ' '];
    var ah: Array = ahraw.Split(separators, System.StringSplitOptions.RemoveEmptyEntries);
    for (var i in ah) {
        FiddlerObject.alert("\"" + ah[i] + "\"");
    }