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