public ILifecycleActions Deserialize(ref JsonReader reader, IJsonFormatterResolver formatterResolver) { if (reader.GetCurrentJsonToken() != JsonToken.BeginObject) { reader.ReadNextBlock(); return(null); } var lifecycles = new Dictionary <string, ILifecycleAction>(); var count = 0; while (reader.ReadIsInObject(ref count)) { var type = reader.ReadPropertyNameSegmentRaw(); ILifecycleAction lifecycleAction = null; if (LifeCycleActions.TryGetValue(type, out var value)) { switch (value) { case 0: lifecycleAction = formatterResolver.GetFormatter <AllocateLifecycleAction>() .Deserialize(ref reader, formatterResolver); break; case 1: lifecycleAction = formatterResolver.GetFormatter <DeleteLifecycleAction>() .Deserialize(ref reader, formatterResolver); break; case 2: lifecycleAction = formatterResolver.GetFormatter <ForceMergeLifecycleAction>() .Deserialize(ref reader, formatterResolver); break; case 3: lifecycleAction = formatterResolver.GetFormatter <FreezeLifecycleAction>() .Deserialize(ref reader, formatterResolver); break; case 4: lifecycleAction = formatterResolver.GetFormatter <ReadOnlyLifecycleAction>() .Deserialize(ref reader, formatterResolver); break; case 5: lifecycleAction = formatterResolver.GetFormatter <RolloverLifecycleAction>() .Deserialize(ref reader, formatterResolver); break; case 6: lifecycleAction = formatterResolver.GetFormatter <SetPriorityLifecycleAction>() .Deserialize(ref reader, formatterResolver); break; case 7: lifecycleAction = formatterResolver.GetFormatter <ShrinkLifecycleAction>() .Deserialize(ref reader, formatterResolver); break; case 8: lifecycleAction = formatterResolver.GetFormatter <UnfollowLifecycleAction>() .Deserialize(ref reader, formatterResolver); break; case 9: lifecycleAction = formatterResolver.GetFormatter <WaitForSnapshotLifecycleAction>() .Deserialize(ref reader, formatterResolver); break; } lifecycles.Add(type.Utf8String(), lifecycleAction); } else { reader.ReadNextBlock(); } } return(new LifecycleActions(lifecycles)); }
private void Serialize <TLifecycleAction>(ref JsonWriter writer, ILifecycleAction value, IJsonFormatterResolver formatterResolver) where TLifecycleAction : ILifecycleAction => formatterResolver.GetFormatter <TLifecycleAction>().Serialize(ref writer, (TLifecycleAction)value, formatterResolver);