public static void Deserialize(GenericPropertyCollection propertyCollection, JObject jObject) { foreach (var property in propertyCollection) { if (jObject[property.Name] != null) { switch (property.Type) { case Enum.GenericPropertyType.String: case Enum.GenericPropertyType.Path: property.Value = JObjectHelper.GetString(jObject, property.Name); break; case Enum.GenericPropertyType.Integer: property.Value = JObjectHelper.GetInt32(jObject, property.Name); break; case Enum.GenericPropertyType.Decimal: property.Value = JObjectHelper.GetDouble(jObject, property.Name); break; case Enum.GenericPropertyType.Boolean: property.Value = JObjectHelper.GetBoolean(jObject, property.Name); break; case Enum.GenericPropertyType.Enumeration: property.Value = JObjectHelper.GetString(jObject, property.Name); break; case Enum.GenericPropertyType.Guid: property.Value = JObjectHelper.GetGuid(jObject, property.Name); break; case Enum.GenericPropertyType.Color: property.Value = JObjectHelper.GetColor(jObject, property.Name); break; case Enum.GenericPropertyType.Point: var x = JObjectHelper.GetInt32(jObject, "x"); var y = JObjectHelper.GetInt32(jObject, "y"); property.Value = new Point(x, y); break; case Enum.GenericPropertyType.Size: var width = JObjectHelper.GetInt32(jObject, "width"); var height = JObjectHelper.GetInt32(jObject, "height"); property.Value = new Size(width, height); break; case Enum.GenericPropertyType.Rectangle: var x_ = JObjectHelper.GetInt32(jObject, "x"); var y_ = JObjectHelper.GetInt32(jObject, "y"); var width_ = JObjectHelper.GetInt32(jObject, "width"); var height_ = JObjectHelper.GetInt32(jObject, "height"); property.Value = new Rectangle(x_, y_, width_, height_); break; case Enum.GenericPropertyType.DateTime: var valueStr = JObjectHelper.GetString(jObject, property.Name, DateTime.UtcNow.ToString("o")); property.Value = DateTime.Parse(valueStr); break; case Enum.GenericPropertyType.Version: var versionStr = JObjectHelper.GetString(jObject, property.Name); property.Value = new Version(versionStr); break; default: break; } } } }
public static Dictionary <string, object> DeserializeFromJArrayToDictionary(GenericPropertyCollection propertyCollection, JArray jArray) { var result = new Dictionary <string, object>(); foreach (var property in propertyCollection) { foreach (JObject jObjectProperty in jArray) { var propertyName = JObjectHelper.GetString(jObjectProperty, "name"); if (!string.IsNullOrEmpty(propertyName) && propertyName == property.Name) { switch (property.Type) { case Enum.GenericPropertyType.String: case Enum.GenericPropertyType.Path: result.Add(propertyName, JObjectHelper.GetString(jObjectProperty, "value")); break; case Enum.GenericPropertyType.Integer: result.Add(propertyName, JObjectHelper.GetInt32(jObjectProperty, "value")); break; case Enum.GenericPropertyType.Decimal: result.Add(propertyName, JObjectHelper.GetDouble(jObjectProperty, "value")); break; case Enum.GenericPropertyType.Boolean: result.Add(propertyName, JObjectHelper.GetBoolean(jObjectProperty, "value")); break; case Enum.GenericPropertyType.Enumeration: result.Add(propertyName, JObjectHelper.GetString(jObjectProperty, "value")); break; case Enum.GenericPropertyType.Guid: result.Add(propertyName, JObjectHelper.GetGuid(jObjectProperty, "value")); break; case Enum.GenericPropertyType.Color: result.Add(propertyName, JObjectHelper.GetColor(jObjectProperty, "value")); break; case Enum.GenericPropertyType.Point: var x = JObjectHelper.GetInt32(jObjectProperty, "x"); var y = JObjectHelper.GetInt32(jObjectProperty, "y"); result.Add(propertyName, new Point(x, y)); break; case Enum.GenericPropertyType.Size: var width = JObjectHelper.GetInt32(jObjectProperty, "width"); var height = JObjectHelper.GetInt32(jObjectProperty, "height"); result.Add(propertyName, new Size(width, height)); break; case Enum.GenericPropertyType.Rectangle: var x_ = JObjectHelper.GetInt32(jObjectProperty, "x"); var y_ = JObjectHelper.GetInt32(jObjectProperty, "y"); var width_ = JObjectHelper.GetInt32(jObjectProperty, "width"); var height_ = JObjectHelper.GetInt32(jObjectProperty, "height"); result.Add(propertyName, new Rectangle(x_, y_, width_, height_)); break; case Enum.GenericPropertyType.DateTime: var valueStr = JObjectHelper.GetString(jObjectProperty, "value", DateTime.UtcNow.ToString("o")); result.Add(propertyName, DateTime.Parse(valueStr)); break; case Enum.GenericPropertyType.Version: var versionStr = JObjectHelper.GetString(jObjectProperty, "value"); result.Add(propertyName, new Version(versionStr)); break; default: break; } break; } } } return(result); }