GeWuYou ad061bba46 feat(ui): 添加UI缓存统计和路由守卫功能
- 新增IUiCacheStatistics接口用于UI缓存统计信息
- 为IUiFactory添加缓存策略管理和统计信息获取功能
- 将IUiRouter中的层级管理改为路由守卫功能
- 实现路由守卫的注册、移除和执行逻辑
- 添加缓存配置管理支持
- [skip ci]
2026-01-20 10:24:23 +08:00

78 lines
2.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
namespace GFramework.Game.Abstractions.ui;
/// <summary>
/// UI缓存配置
/// 用于配置UI实例的缓存行为
/// </summary>
public class UiCacheConfig
{
/// <summary>
/// 最大缓存数量
/// </summary>
public int MaxCacheSize { get; set; } = 10;
/// <summary>
/// 缓存淘汰策略
/// </summary>
public CacheEvictionPolicy EvictionPolicy { get; set; } = CacheEvictionPolicy.LRU;
/// <summary>
/// 访问后过期时间可选null 表示不启用)
/// </summary>
public TimeSpan? ExpireAfterAccess { get; set; } = null;
/// <summary>
/// 创建默认配置LRU 策略,最大 10 个实例)
/// </summary>
public static UiCacheConfig Default => new UiCacheConfig
{
MaxCacheSize = 10,
EvictionPolicy = CacheEvictionPolicy.LRU,
ExpireAfterAccess = null
};
/// <summary>
/// 创建 LRU 策略配置
/// </summary>
/// <param name="maxSize">最大缓存数量</param>
/// <param name="expireAfter">访问后过期时间</param>
public static UiCacheConfig Lru(int maxSize = 10, TimeSpan? expireAfter = null)
=> new UiCacheConfig
{
MaxCacheSize = maxSize,
EvictionPolicy = CacheEvictionPolicy.LRU,
ExpireAfterAccess = expireAfter
};
/// <summary>
/// 创建 LFU 策略配置
/// </summary>
/// <param name="maxSize">最大缓存数量</param>
/// <param name="expireAfter">访问后过期时间</param>
public static UiCacheConfig Lfu(int maxSize = 10, TimeSpan? expireAfter = null)
=> new UiCacheConfig
{
MaxCacheSize = maxSize,
EvictionPolicy = CacheEvictionPolicy.LFU,
ExpireAfterAccess = expireAfter
};
}
/// <summary>
/// 缓存淘汰策略枚举
/// </summary>
public enum CacheEvictionPolicy
{
/// <summary>
/// 最近最少使用
/// </summary>
LRU,
/// <summary>
/// 最少使用频率
/// </summary>
LFU
}