private Action ParseAction(JsonReader r) { if (r.TokenType != JsonToken.StartObject) { throw new InvalidOperationException(); } if (!r.Read() || r.TokenType != JsonToken.PropertyName) { throw new InvalidOperationException(); } var paramKey = Convert.ToInt32(r.Value); if (!r.Read()) { throw new InvalidOperationException(); } Action value; if (r.TokenType == JsonToken.StartObject) { var act = new RelativeAction { BaseParam = paramKey }; while (r.Read() && r.TokenType != JsonToken.EndObject) { if (r.TokenType != JsonToken.PropertyName) { throw new InvalidOperationException(); } switch (r.Value.ToString()) { case "rate": act.Rate = r.ReadInt32(); break; case "limit": act.Limit = r.ReadInt32(); break; default: Console.Error.WriteLine("Unknown 'Item'.'action' data key: {0}", r.Value); throw new NotSupportedException(); } } value = act; } else if (r.TokenType == JsonToken.Integer || r.TokenType == JsonToken.String) { value = new FixedAction { BaseParam = paramKey, Value = Convert.ToInt32(r.Value) }; } else { throw new InvalidOperationException(); } if (!r.Read() || r.TokenType != JsonToken.EndObject) { throw new InvalidOperationException(); } return(value); }
private Action ParseAction(JsonReader r) { if (r.TokenType != JsonToken.StartObject) throw new InvalidOperationException(); if (!r.Read() || r.TokenType != JsonToken.PropertyName) throw new InvalidOperationException(); var paramKey = Convert.ToInt32(r.Value); if (!r.Read()) throw new InvalidOperationException(); Action value; if (r.TokenType == JsonToken.StartObject) { var act = new RelativeAction { BaseParam = paramKey }; while (r.Read() && r.TokenType != JsonToken.EndObject) { if (r.TokenType != JsonToken.PropertyName) throw new InvalidOperationException(); switch (r.Value.ToString()) { case "rate": act.Rate = r.ReadInt32(); break; case "limit": act.Limit = r.ReadInt32(); break; default: Console.Error.WriteLine("Unknown 'Item'.'action' data key: {0}", r.Value); throw new NotSupportedException(); } } value = act; } else if (r.TokenType == JsonToken.Integer || r.TokenType == JsonToken.String) { value = new FixedAction { BaseParam = paramKey, Value = Convert.ToInt32(r.Value) }; } else throw new InvalidOperationException(); if (!r.Read() || r.TokenType != JsonToken.EndObject) throw new InvalidOperationException(); return value; }