using System; using System.Reflection; namespace GFramework.Game.Abstractions.setting; /// /// 设置数据抽象基类,提供默认的 Reset() 实现 /// public abstract class SettingsData : ISettingsData { /// /// 重置设置为默认值 /// 使用反射将所有属性重置为它们的默认值 /// public virtual void Reset() { var properties = GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance); foreach (var prop in properties) { if (!prop.CanWrite || !prop.CanRead) continue; var defaultValue = GetDefaultValue(prop.PropertyType); prop.SetValue(this, defaultValue); } } /// /// 获取指定类型的默认值 /// /// 要获取默认值的类型 /// 类型的默认值 private static object? GetDefaultValue(Type type) { return type.IsValueType ? Activator.CreateInstance(type) : null; } }