private object GetPayloadSettingsValue(StreamDeckEventPayload obj, string propertyName) { if (obj.PayloadSettingsHasProperty(propertyName)) { if (obj.payload.settings.settingsModel[propertyName].Type != JTokenType.Array) { return(obj.payload.settings.settingsModel[propertyName].Value); } else { return(((JArray)obj.payload.settings.settingsModel[propertyName]).ToObject(typeof(string[]))); } } return(null); }
protected void SetModelProperties(StreamDeckEventPayload args) { var properties = typeof(T).GetProperties(); foreach (var prop in properties) { if (args.payload != null && args.payload.settings != null && args.payload.settings.settingsModel != null) { if (args.PayloadSettingsHasProperty(prop.Name)) { var value = args.GetPayloadSettingsValue(prop.Name); var value2 = Convert.ChangeType(value, prop.PropertyType); prop.SetValue(SettingsModel, value2); } } } }
// These methods are overriding the default methods because arrays are not supported // in model yet. private new void SetModelProperties(StreamDeckEventPayload args) { PropertyInfo[] properties = typeof(T).GetProperties(); PropertyInfo[] array = properties; foreach (PropertyInfo propertyInfo in array) { if ((args.payload != null && args.payload.settings != null && args.payload.settings.settingsModel != null) && args.PayloadSettingsHasProperty(propertyInfo.Name)) { object payloadSettingsValue = this.GetPayloadSettingsValue(args, propertyInfo.Name); object value = Convert.ChangeType(payloadSettingsValue, propertyInfo.PropertyType); propertyInfo.SetValue(this.SettingsModel, value); } } }