private Capability CreateCapability(CapabilitiyTypes cabType) { Capability s = null; switch (cabType) { case CapabilitiyTypes.AlexaInterface: s = new AlexaInterface(); break; default: throw new IndexOutOfRangeException("Unknown CapabilitiyTypes"); } 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>(); Capability cab = null; if (!String.IsNullOrEmpty(type)) { CapabilitiyTypes cabType = (CapabilitiyTypes)Enum.Parse(typeof(CapabilitiyTypes), type); cab = CreateCapability(cabType); serializer.Populate(jObject.CreateReader(), cab); } else { throw new InvalidOperationException("Empty grantee type."); } return(cab); }