1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- using System;
- namespace BepInEx.Configuration
- {
- /// <summary>
- /// Provides access to a single setting inside of a <see cref="Configuration.ConfigFile"/>.
- /// </summary>
- /// <typeparam name="T">Type of the setting.</typeparam>
- public sealed class ConfigWrapper<T>
- {
- /// <summary>
- /// Entry of this setting in the <see cref="Configuration.ConfigFile"/>.
- /// </summary>
- public ConfigEntry ConfigEntry { get; }
- /// <summary>
- /// Unique definition of this setting.
- /// </summary>
- public ConfigDefinition Definition => ConfigEntry.Definition;
- /// <summary>
- /// Config file this setting is inside of.
- /// </summary>
- public ConfigFile ConfigFile => ConfigEntry.ConfigFile;
- /// <summary>
- /// Fired when the setting is changed. Does not detect changes made outside from this object.
- /// </summary>
- public event EventHandler SettingChanged;
- /// <summary>
- /// Value of this setting.
- /// </summary>
- public T Value
- {
- get => (T)ConfigEntry.Value;
- set => ConfigEntry.SetValue(value, true, this);
- }
- internal ConfigWrapper(ConfigEntry configEntry)
- {
- ConfigEntry = configEntry ?? throw new ArgumentNullException(nameof(configEntry));
- configEntry.ConfigFile.SettingChanged += (sender, args) =>
- {
- if (args.ChangedSetting == configEntry) SettingChanged?.Invoke(sender, args);
- };
- }
- }
- }
|