private Grantee CreateGrantee(GranteeTypes granteeType) { Grantee s = null; switch (granteeType) { case GranteeTypes.BearerToken: s = new BearerToken(); break; default: throw new IndexOutOfRangeException("Unknown granteeType"); } return(s); }
/// <summary> /// Reads Json in a Objekt und creates a Property /// </summary> /// <param name="reader"></param> /// <param name="objectType"></param> /// <param name="existingValue"></param> /// <param name="serializer"></param> /// <returns></returns> public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { var jObject = JObject.Load(reader); string type = jObject["type"]?.Value <string>(); Grantee grantee = null; if (!String.IsNullOrEmpty(type)) { GranteeTypes granteeType = (GranteeTypes)Enum.Parse(typeof(GranteeTypes), type); grantee = CreateGrantee(granteeType); serializer.Populate(jObject.CreateReader(), grantee); } else { throw new InvalidOperationException("Empty grantee type."); } return(grantee); }