namespace NBF.Setting { public interface IOptionBase { string Name { get; } void Initialize(); void Apply(); } public abstract class OptionBase : IOptionBase { protected string SaveKey => $"Setting_{Group}_{Name}"; public abstract string Name { get; } /// /// 所在组 /// public abstract string Group { get; } public void Initialize() { OnInitialize(); Load(); } /// /// 加载用户的设置 /// public void Load() { OnLoad(); } public void Apply() { OnApply(); } protected abstract void OnInitialize(); protected abstract void OnApply(); protected abstract void OnReset(); protected abstract void OnLoad(); } }