private static void WriteObject(WriterState writer, object val) { writer.Write((byte)SerializedType.Object); foreach (var getter in GetterHandler.GetGetterHandlers(val.GetType())) { getter.Handle(writer, val); } writer.Write((byte)EnumerableType.End); }
private static void WriteObject <T>(WriterState writer, T val) { var type = val.GetType(); if (writer.CustomObjectIdentifierProviders == null || !writer.CustomObjectIdentifierProviders.TryGetValue(typeof(T), out var customObjectIdentifierProvider)) { writer.Write((byte)SerializedType.Object); } else { writer.Write((byte)SerializedType.CustomObject); WriteValue(writer, customObjectIdentifierProvider.GetIdentifier(type)); } var getters = type == typeof(T) ? GetterHandler.GetterHandlers <T> .Getters : GetterHandler.GetGetterHandlers(type); foreach (var getter in getters) { getter.Handle(writer, val); } writer.Write((byte)EnumerableType.End); }