【问题标题】:Need some help converting Js to C#需要一些帮助将 Js 转换为 C#
【发布时间】:2015-09-12 02:01:24
【问题描述】:

我需要将其转换为 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)

【问题讨论】:

    标签: javascript c#


    【解决方案1】:

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

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

    无法直接转换为 C#,因为 C#/.NET 不使用具有可枚举属性的原型,最接近的类似物是将 _self.params 表示为 Dictionary&lt;Object,String&gt;

    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();
    }
    

    【讨论】:

    • 您忘记对键进行排序
    • 我刚刚“回答”了我的问题以放置整个相关代码...这个静态字符串会这样工作吗?
    【解决方案2】:

    我写这篇文章是为了回答整个事情......

    这是设置第一个参数的原始 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;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-11-06
      • 2022-06-12
      • 1970-01-01
      • 1970-01-01
      • 2014-05-01
      • 2016-02-17
      • 1970-01-01
      相关资源
      最近更新 更多