需要一些帮助将Js转换为C#

时间:2015-09-12 02:01:24

标签: javascript c#

我需要将其转换为c#,但我不知道该怎么做。

getParamsAsStr = function () {
    var keys = Object.keys(_self.params ? _self.params : {});
    keys.sort();
    var response = "";
    for (var i = 0 ; i < keys.length ; i++) {
        response += _self.params[keys[i]];
    }
    return response;
}

(基本上,我很想知道我应该使用什么而不是Object.keys)

2 个答案:

答案 0 :(得分:1)

此函数迭代某些对象的可枚举属性(Object.keys)并将属性值写入字符串 - 尽管没有键且没有任何分隔符。

我不知道_self.params在这种情况下所指的是什么,因为它不是JavaScript内在的,也没有提供它的定义。

无法直接转换为C#,因为C#/ .NET不使用具有可枚举属性的原型,最接近的模拟是将_self.params表示为Dictionary<Object,String>

public static String GetParamsAsStr(Dictionary<Object,String> p) {
    if( p == null || p.Count == 0 ) return String.Empty;
    StringBuilder sb = new StringBuilder();
    foreach(Object key in p.Keys) sb.Append( p[key] );
    return sb.ToString();
}

答案 1 :(得分:0)

我写这个作为能够放置整个事情的答案......

这是最初的JS代码,它设置了稍后要进行的一些API调用的第一个参数:

    var Signer = function () {
    this.apkId = getApkId();
    this.apkSecret = getApkSecret();
    this.servicio = "";
    this.sessionToken = "";
    this.timestamp = "";
    this.requestId = "";
    this.params = "";
    var _self = this;
    this.getParamsAsStr = function () {
        var keys = Object.keys(_self.params ? _self.params : {});
        keys.sort();
        var response = "";
        for (var i = 0 ; i < keys.length ; i++) {
            response += _self.params[keys[i]];
        }
        return response;
    }
    this.getSignature = function () {
        var baseString = 
            _self.apkSecret +
            _self.servicio +
            _self.sessionToken +
            _self.timestamp +
            _self.requestId +
            _self.getParamsAsStr();
        console.log("Signature pre hash:\n" + baseString);
        baseString = baseString.toLowerCase();

        return sha1(baseString);
    }
}

到目前为止,我在C#中所做的是以下内容:

    public class Signer
{
    public string appId = getApkId();
    public string appSecret = getAppSecret();
    public string servicio = "";
    public string sessionToken = "";
    public string timestamp = "";
    public string requestId = "";
    public string params = "";

    //Here I have to write the getParamsAsStr()

    private static string getApkId(){
        string id = "xxxxxxxxxxxxxxxx";
        return id;
    }

    private static string getAppSecret(){
        string id = "xxxxxxxxxxxxxxxx";
        return id;
    }
}