private void WriteModelMetaData(JsonWriter writer, Model.MetaData obj)
        {
            var t          = obj.GetType();
            var properties = t.GetProperties();

            writer.WriteStartObject();
            foreach (var property in properties)
            {
                writer.WritePropertyName(property.Name);
                writer.WriteValue(property.GetValue(obj));
            }
            writer.WriteEndObject();
        }
        private Model.MetaData ReadMetaData(JsonReader reader)
        {
            if (reader.TokenType == JsonToken.Null)
            {
                return(null);
            }

            var obj = new Model.MetaData {
            };
            var t   = obj.GetType();

            while (reader.Read())
            {
                switch (reader.TokenType)
                {
                case JsonToken.PropertyName:
                    var propertyName = reader.Value.ToString();

                    if (!reader.Read())
                    {
                        throw new JsonSerializationException("Unexpected end when reading Model object");
                    }

                    var p = t.GetProperty(propertyName);

                    if (p.PropertyType == typeof(DateTime))
                    {
                        var d = DateTime.Parse(reader.Value as string).ToUniversalTime();
                        p.SetValue(obj, d);
                        break;
                    }

                    p.SetValue(obj, reader.Value);
                    break;

                case JsonToken.Comment:
                    break;

                case JsonToken.EndObject:
                    return(obj);
                }
            }

            throw new JsonSerializationException("Unexpected end when reading Model object");
        }