refactor(setting): 优化设置模型中的数据类型获取方式

- 在IResetApplyAbleSettings接口中添加DataType属性定义
- 修改SettingsModel中数据存储逻辑,使用applicator.DataType替代typeof(T)
- 为GodotAudioSettings、GodotGraphicsSettings和GodotLocalizationSettings实现DataType属性
- 统一通过DataType属性获取设置数据的类型信息
- [release ci]
This commit is contained in:
GeWuYou 2026-01-31 23:11:55 +08:00
parent f226a355b2
commit 829c7a3b06
5 changed files with 10 additions and 1 deletions

View File

@ -24,4 +24,10 @@ public interface IResetApplyAbleSettings : IResettable, IApplyAbleSettings
/// </summary> /// </summary>
/// <returns>ISettingsData类型的设置数据</returns> /// <returns>ISettingsData类型的设置数据</returns>
ISettingsData Data { get; } ISettingsData Data { get; }
/// <summary>
/// 获取数据类型信息
/// </summary>
/// <returns>表示数据类型的Type对象</returns>
Type DataType { get; }
} }

View File

@ -67,7 +67,7 @@ public class SettingsModel<TRepository>(IDataLocationProvider? locationProvider,
where T : class, IResetApplyAbleSettings where T : class, IResetApplyAbleSettings
{ {
_applicators[typeof(T)] = applicator; _applicators[typeof(T)] = applicator;
_data[typeof(T)] = applicator.Data; _data[applicator.DataType] = applicator.Data;
return this; return this;
} }

View File

@ -35,6 +35,7 @@ public class GodotAudioSettings(ISettingsModel model, AudioBusMap audioBusMap)
} }
public ISettingsData Data { get; } = model.GetData<AudioSettings>(); public ISettingsData Data { get; } = model.GetData<AudioSettings>();
public Type DataType { get; } = typeof(AudioSettings);
/// <summary> /// <summary>
/// 设置指定音频总线的音量 /// 设置指定音频总线的音量

View File

@ -52,4 +52,5 @@ public class GodotGraphicsSettings(ISettingsModel model) : IResetApplyAbleSettin
} }
public ISettingsData Data { get; } = model.GetData<GraphicsSettings>(); public ISettingsData Data { get; } = model.GetData<GraphicsSettings>();
public Type DataType { get; } = typeof(GraphicsSettings);
} }

View File

@ -49,4 +49,5 @@ public class GodotLocalizationSettings(ISettingsModel model, LocalizationMap loc
} }
public ISettingsData Data { get; } = model.GetData<LocalizationSettings>(); public ISettingsData Data { get; } = model.GetData<LocalizationSettings>();
public Type DataType { get; } = typeof(LocalizationSettings);
} }