123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- using System;
- namespace BepInEx.Configuration
- {
- /// <summary>
- /// Section and key of a setting. Used as a unique key for identification within a <see cref="T:BepInEx.Configuration.ConfigFile" />.
- /// The same definition can be used in multiple config files, it will point to different settings then.
- /// </summary>
- /// <inheritdoc />
- public class ConfigDefinition : IEquatable<ConfigDefinition>
- {
- /// <summary>
- /// Group of the setting. All settings within a config file are grouped by this.
- /// </summary>
- public string Section { get; }
- /// <summary>
- /// Name of the setting.
- /// </summary>
- public string Key { get; }
- /// <summary>
- /// Create a new definition. Definitions with same section and key are equal.
- /// </summary>
- /// <param name="section">Group of the setting, case sensitive.</param>
- /// <param name="key">Name of the setting, case sensitive.</param>
- public ConfigDefinition(string section, string key)
- {
- Key = key ?? throw new ArgumentNullException(nameof(key));
- Section = section ?? throw new ArgumentNullException(nameof(section));
- }
- /// <inheritdoc />
- [Obsolete("description argument is no longer used, put it in a ConfigDescription instead")]
- public ConfigDefinition(string section, string key, string description) : this(section, key) { }
- /// <summary>
- /// Check if the definitions are the same.
- /// </summary>
- /// <inheritdoc />
- public bool Equals(ConfigDefinition other)
- {
- if (other == null) return false;
- return string.Equals(Key, other.Key)
- && string.Equals(Section, other.Section);
- }
- /// <summary>
- /// Check if the definitions are the same.
- /// </summary>
- public override bool Equals(object obj)
- {
- if (ReferenceEquals(null, obj))
- return false;
- if (ReferenceEquals(this, obj))
- return true;
- return Equals(obj as ConfigDefinition);
- }
- /// <inheritdoc />
- public override int GetHashCode()
- {
- unchecked
- {
- int hashCode = Key != null ? Key.GetHashCode() : 0;
- hashCode = (hashCode * 397) ^ (Section != null ? Section.GetHashCode() : 0);
- return hashCode;
- }
- }
- /// <summary>
- /// Check if the definitions are the same.
- /// </summary>
- public static bool operator ==(ConfigDefinition left, ConfigDefinition right)
- => Equals(left, right);
- /// <summary>
- /// Check if the definitions are the same.
- /// </summary>
- public static bool operator !=(ConfigDefinition left, ConfigDefinition right)
- => !Equals(left, right);
- /// <inheritdoc />
- public override string ToString()
- {
- return Section + "." + Key;
- }
- }
- }
|