/// <summary> /// UnSubscribe from a setting. /// </summary> /// <typeparam name="T1">The setting.</typeparam> /// <param name="myGraphDSSettingChangingEvent">The event handler.</param> /// <example>Subscribe<ObjectCacheCapacitySetting>(myGraphAppSettings_OnSettingChanging);</example> /// <returns></returns> public void UnSubscribe <T1>(GraphSettingChangingEvent myGraphDSSettingChangingEvent) where T1 : IGraphSetting, new() { var IGraphDSSetting = new T1(); lock (_Settings) { if (_Settings.ContainsKey(IGraphDSSetting.SettingName) && _Settings[IGraphDSSetting.SettingName].IGraphDSSetting != null) { _Settings[IGraphDSSetting.SettingName].GraphDSSettingChangingEvent -= myGraphDSSettingChangingEvent; } } }
/// <summary> /// Subscribe to an setting. The event will be fired if the setting is changing. /// You need to subscribe to the defined setting <typeparamref name="T1"/> to make it known the the manager. /// </summary> /// <typeparam name="T1">The setting.</typeparam> /// <param name="myGraphDSSettingChangingEvent">The event handler.</param> /// <example>Subscribe<ObjectCacheCapacitySetting>(myGraphAppSettings_OnSettingChanging);</example> /// <returns></returns> public void Subscribe <T1>(GraphSettingChangingEvent myGraphDSSettingChangingEvent) where T1 : IGraphSetting, new() { var IGraphDSSetting = new T1(); lock (_Settings) { if (!_Settings.ContainsKey(IGraphDSSetting.SettingName)) { _Settings.Add(IGraphDSSetting.SettingName, new CurrentSetting() { IGraphDSSetting = IGraphDSSetting, CurrentValue = IGraphDSSetting.DefaultSettingValue, GraphDSSettingChangingEvent = null }); } else if (_Settings[IGraphDSSetting.SettingName].IGraphDSSetting == null) // In case the setting was load from file { _Settings[IGraphDSSetting.SettingName].IGraphDSSetting = IGraphDSSetting; } _Settings[IGraphDSSetting.SettingName].GraphDSSettingChangingEvent += myGraphDSSettingChangingEvent; } }