public JsonContract ModifyContract(JsonContract contract) { if (contract is JsonDictionaryContract) { var dictionaryContract = contract as JsonDictionaryContract; if (typeof(GeoLocation).IsAssignableFrom(dictionaryContract.DictionaryValueType)) { dictionaryContract.DictionaryKeyResolver = x => x + "$$geo"; } else if (typeof(Attachment).IsAssignableFrom(dictionaryContract.DictionaryValueType)) { dictionaryContract.DictionaryKeyResolver = x => x + "$$attachment"; } else { dictionaryContract.DictionaryKeyResolver = x => TypeSuffix.GetSuffixedFieldName(x, dictionaryContract.DictionaryValueType); } dictionaryContract.Converter = new Dictionary2Find.Json.DictionaryConverter() { PropertyNameDesolver = x => x.Contains('$') ? x.Split('$')[0] : x }; } return(contract); }
public TypedNetString(System.IO.Stream data) { this.data = data; lock (this.data) { this.offset = data.Position; int byteRead; List <byte> lengthBytes = new List <byte>(); while ((byteRead = data.ReadByte()) != DELIM) { if (byteRead == -1) { throw new System.IO.EndOfStreamException("Reached end of stream while reading length field"); } lengthBytes.Add((byte)byteRead); } this.valueLength = 0; if (lengthBytes.Count > 0) { string lengthString = System.Text.ASCIIEncoding.ASCII.GetString(lengthBytes.ToArray()); if (lengthString.Length > 0) { this.valueLength = Int32.Parse(lengthString); } } this.valueOffset = data.Position; data.Position += this.valueLength; this.Type = (TypeSuffix)data.ReadByte(); } }
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { Url url = existingValue as Url; string str = (string)null; while (reader.Read()) { if (reader.TokenType.Equals((object)JsonToken.PropertyName)) { str = reader.Value as string; } if (reader.TokenType.Equals((object)JsonToken.String) && str.Equals(TypeSuffix.GetSuffixedFieldName("OriginalString", typeof(string)))) { return((object)new Url(reader.Value.ToString())); } } return((object)url); }