public override object?ReadJson(JsonReader reader, Type objectType, object?existingValue, [NotNull] JsonSerializer serializer) { var jo = JObject.Load(reader); var type = Enum.Parse <PromptDataType>((string)jo["type"] !); var data = jo["s"] !.CreateReader(); IPromptData state = type switch { PromptDataType.MessageSingleUser => serializer.Deserialize <PromptDataMessage>(data) !, PromptDataType.ReactionSingleUser => serializer.Deserialize <PromptDataReaction>(data) !, PromptDataType.RichDisplay => serializer.Deserialize <RichDisplay>(data) !, _ => throw new ArgumentOutOfRangeException(nameof(type)) }; return(new PromptData(null !, type, state)); }
public PromptData(IClient client, PromptDataType type, IPromptData state) { Client = client; Type = type; Data = state; }