public static TSettings GetComponentSettings <TSettings>(this ISettingsService settingsService, string componentId) where TSettings : ComponentSettings
        {
            if (settingsService == null)
            {
                throw new ArgumentNullException(nameof(settingsService));
            }

            var uri = SettingsUriGenerator.FromComponent(componentId);

            return(settingsService.GetSettings <TSettings>(uri));
        }
        public static void CreateSettingsMonitor <TSettings>(this ISettingsService settingsService, IComponent component, Action <SettingsChangedEventArgs <TSettings> > callback) where TSettings : ComponentSettings
        {
            if (settingsService == null)
            {
                throw new ArgumentNullException(nameof(settingsService));
            }

            var uri = SettingsUriGenerator.FromComponent(component.Id);

            settingsService.CreateSettingsMonitor(uri, callback);
        }
        public static JObject GetRawSettings(this ISettingsService settingsService, IComponent component)
        {
            if (settingsService == null)
            {
                throw new ArgumentNullException(nameof(settingsService));
            }
            if (component == null)
            {
                throw new ArgumentNullException(nameof(component));
            }

            var uri = SettingsUriGenerator.FromComponent(component.Id);

            return(settingsService.GetSettings(uri));
        }
        public static void SetSettings <TSettings>(this ISettingsService settingsService, IComponent component, TSettings settings) where TSettings : ComponentSettings
        {
            if (settingsService == null)
            {
                throw new ArgumentNullException(nameof(settingsService));
            }
            if (component == null)
            {
                throw new ArgumentNullException(nameof(component));
            }

            var uri = SettingsUriGenerator.FromComponent(component.Id);

            settingsService.ImportSettings(uri, settings);
        }