public override void Read(object input, ObjectReader reader, Writer writer, PartialOptions optionsOverride) { IDictionary dictionary = input as IDictionary; if (dictionary == null) return; if (ReferenceStructure(input, reader, optionsOverride)) return; if (ShouldWriteTypeIdentifier(reader.Options, optionsOverride)) writer.BeginStructure(CurrentTypeResolver.GetTypeIdentifier(Type), reader.GetType()); else writer.BeginStructure(Type); foreach (object key in dictionary.Keys) { // Convert.ToString is in case the keys are numbers, which are represented // as strings when used as keys, but can be indexed with numbers in JavaScript string name = Convert.ToString(key, CultureInfo.InvariantCulture); object value = dictionary[key]; writer.AddProperty(name); ValueTypeDef.ReadObject(value, reader, writer, PartialOptions.Default); } writer.EndStructure(); }
public override void Read(object input, ObjectReader reader, Writer writer, PartialOptions optionsOverride) { if ((optionsOverride.EnumSerialization ?? reader.Options.EnumSerialization) == EnumSerialization.AsString) writer.Write(input.ToString()); else writer.Write((int)input); }
public override void Read(object input, ObjectReader reader, Writer writer, PartialOptions optionsOverride) { if (writer.CanWrite(input)) writer.Write(input); else base.Read(input, reader, writer, optionsOverride); }
public override void Read(object input, ObjectReader reader, Writer writer, PartialOptions optionsOverride) { if (ReferenceStructure(input, reader, optionsOverride)) return; if (ShouldWriteTypeIdentifier(reader.Options, optionsOverride)) writer.BeginStructure(CurrentTypeResolver.GetTypeIdentifier(Type), reader.GetType()); else writer.BeginStructure(Type); for (int i = 0; i < AllSerializableProperties.Length; i++) { PropertyDefinition property = AllSerializableProperties[i]; if (property.MatchesPropertyFilter(reader.Options)) { writer.AddProperty(property.SerializedName); reader.PropertyStack.Push(property); object value = property.GetFrom(input); property.Read(value, reader, writer); reader.PropertyStack.Pop(); } } writer.EndStructure(); }
public override void Read(object input, ObjectReader reader, Writer writer, PartialOptions optionsOverride) { if (ReferenceStructure(input, reader, optionsOverride)) return; reader.AddReference(); writer.Write(input); }
public override void Read(object input, ObjectReader reader, Writer writer, PartialOptions optionsOverride) { Guid? guid = input as Guid?; if (guid == null) writer.WriteNull(); else writer.Write(guid.ToString()); }
public override void Read(object input, ObjectReader reader, Writer writer, PartialOptions optionsOverride) { IEnumerable inputArray = input as IEnumerable; if (inputArray == null) return; writer.BeginSequence(); foreach (object item in inputArray) ItemTypeDef.ReadObject(item, reader, writer, optionsOverride); writer.EndSequence(); }
public override void Read(object input, ObjectReader reader, Writer writer, PartialOptions optionsOverride) { writer.WriteNull(); }
public override void Read(object input, ObjectReader reader, Writer writer, PartialOptions optionsOverride) { underlyingTypeDef.Read(input, reader, writer, optionsOverride); }
protected override bool ReferenceStructure(object input, ObjectReader reader, PartialOptions optionsOverride) { reader.AddReference(); return false; // Can't reference value types }
public OverrideOptionsAttribute(PartialOptions optionsOverride) { this.optionsOverride = optionsOverride; }