public TDictionary Deserialize(NetDataReader reader, NetDataSerializerOptions options) { if (reader.ReadBoolean() == false) { return(default(TDictionary)); } else { INetDataFormatterResolver resolver = options.Resolver; INetDataFormatter <TKey> keyFormatter = resolver.GetFormatter <TKey>(); INetDataFormatter <TValue> valueFormatter = resolver.GetFormatter <TValue>(); var len = reader.ReadInt32(); TIntermediate dict = this.Create(len, options); for (int i = 0; i < len; i++) { TKey key = keyFormatter.Deserialize(reader, options); TValue value = valueFormatter.Deserialize(reader, options); this.Add(dict, i, key, value, options); } return(this.Complete(dict)); } }
public void Serialize(NetDataWriter writer, ValueTuple <T1> value, NetDataSerializerOptions options) { writer.Write((byte)1); INetDataFormatterResolver resolver = options.Resolver; resolver.GetFormatter <T1>().Serialize(writer, value.Item1, options); }
public void Serialize(NetDataWriter writer, KeyValuePair <TKey, TValue> value, NetDataSerializerOptions options) { writer.Write((byte)2); INetDataFormatterResolver resolver = options.Resolver; resolver.GetFormatter <TKey>().Serialize(writer, value.Key, options); resolver.GetFormatter <TValue>().Serialize(writer, value.Value, options); return; }
public void Serialize(NetDataWriter writer, TDictionary value, NetDataSerializerOptions options) { if (value == null) { writer.Write(false); } else { writer.Write(true); INetDataFormatterResolver resolver = options.Resolver; INetDataFormatter <TKey> keyFormatter = resolver.GetFormatter <TKey>(); INetDataFormatter <TValue> valueFormatter = resolver.GetFormatter <TValue>(); int count; { var col = value as ICollection <KeyValuePair <TKey, TValue> >; if (col != null) { count = col.Count; } else { var col2 = value as IReadOnlyCollection <KeyValuePair <TKey, TValue> >; if (col2 != null) { count = col2.Count; } else { throw new NetDataSerializationException("DictionaryFormatterBase's TDictionary supports only ICollection<KVP> or IReadOnlyCollection<KVP>"); } } } writer.Write(count); TEnumerator e = this.GetSourceEnumerator(value); try { while (e.MoveNext()) { KeyValuePair <TKey, TValue> item = e.Current; keyFormatter.Serialize(writer, item.Key, options); valueFormatter.Serialize(writer, item.Value, options); } } finally { e.Dispose(); } } }
public ValueTuple <T1> Deserialize(NetDataReader reader, NetDataSerializerOptions options) { var count = reader.ReadByte(); if (count != 1) { throw new NetDataSerializationException("Invalid ValueTuple count"); } INetDataFormatterResolver resolver = options.Resolver; T1 item1 = resolver.GetFormatter <T1>().Deserialize(reader, options); return(new ValueTuple <T1>(item1)); }
public void Serialize(NetDataWriter writer, Tuple <T1> value, NetDataSerializerOptions options) { if (value == null) { writer.Write(false); } else { writer.Write(true); writer.Write((byte)1); INetDataFormatterResolver resolver = options.Resolver; resolver.GetFormatter <T1>().Serialize(writer, value.Item1, options); } }
public KeyValuePair <TKey, TValue> Deserialize(NetDataReader reader, NetDataSerializerOptions options) { var count = reader.ReadByte(); if (count != 2) { throw new NetDataSerializationException("Invalid KeyValuePair format."); } INetDataFormatterResolver resolver = options.Resolver; TKey key = resolver.GetFormatter <TKey>().Deserialize(reader, options); TValue value = resolver.GetFormatter <TValue>().Deserialize(reader, options); return(new KeyValuePair <TKey, TValue>(key, value)); }
public NetDataSerializerOptions(INetDataFormatterResolver resolver) { Resolver = resolver; }