コード例 #1
0
        public IDictionary <string, object> GetFromJObject(CrossSocket client, JObject value)
        {
            DynamicRemoteObject          d    = new DynamicRemoteObject();
            IDictionary <string, object> data = (IDictionary <string, object>)d;

            foreach (JProperty property in value.Properties())
            {
                var val = property.Value;
                data[property.Name] = GetArgument(client, val);
            }
            return(data);
        }
コード例 #2
0
        public object GetArgument(CrossSocket client, object value1)
        {
            if (value1 is JValue)
            {
                var value = (JValue)value1;
                if (value.Type == JTokenType.Integer)
                {
                    long val = value.ToObject <long>();
                    if (val <= Int32.MaxValue || val >= Int32.MinValue)
                    {
                        return((int)val);
                    }
                    else
                    {
                        return(val);
                    }
                }
                else if (value.Type == JTokenType.Float)
                {
                    double val = value.ToObject <double>();
                    if (val <= Single.MaxValue || val >= Single.MinValue)
                    {
                        return((float)val);
                    }
                    else
                    {
                        return(val);
                    }
                }
                else if (value.Type == JTokenType.String)
                {
                    return(value.ToObject <string>());
                }
                else if (value.Type == JTokenType.Null || value.Type == JTokenType.Undefined)
                {
                    return(null);
                }

                else if (value.Type == JTokenType.Boolean)
                {
                    return(value.ToObject <bool>());
                }
            }
            else if (value1 is JArray)
            {
                return(GetArguments(client, (JArray)value1));
            }

            else if (value1 is JObject)
            {
                var obj = (JObject)value1;
                IDictionary <string, object> data = GetFromJObject(client, obj);
                if (data.ContainsKey("rpa_socket"))
                {
                    return(client);
                }
                else if (data.ContainsKey("rpa_id"))
                {
                    if (data.ContainsKey("rpa_from") && (bool)data["rpa_from"])
                    {
                        DynamicRemoteObject val = null;
                        if (data.ContainsKey("rpa_array") && (bool)data["rpa_array"])
                        {
                            val = new DynamicRemoteArrayObject(this, client);
                            //val["Length"] = data["length"];
                        }
                        else
                        {
                            val = new DynamicRemoteObject(this, client);
                        }
                        foreach (var Item in data)
                        {
                            val.dictionary.Add(Item.Key, Item.Value);
                        }

                        return(val);

                        /*
                         * var vall = new RemoteObject(this, client);
                         * vall.rpa_id = (string)data["rpa_id"];
                         * vall.rpa_from = true;
                         * if(data.ContainsKey("rpa_function"))
                         *  vall.rpa_function = (bool)data["rpa_function"];
                         * return vall.ConvertToDynamic();
                         */
                    }
                    else
                    {
                        string id = data["rpa_id"].ToString();
                        return(GetTarget(id));
                    }
                }
                else if (data.ContainsKey("rpa_array") && (bool)data["rpa_array"])
                {
                    var val = new DynamicRemoteArrayObject(this, client);
                    val.dictionary = ((DynamicRemoteObject)data).dictionary;
                    //val["Length"] = data["length"];
                    return(val);
                }
                else
                {
                    return(data);
                }
            }

            return(null);
        }