babalae / better-genshin-impact

📦BetterGI · 更好的原神 - 自动拾取 | 自动剧情 | 全自动钓鱼(AI) | 全自动七圣召唤 | 自动伐木 | 自动刷本 - UI Automation Testing Tools For Genshin Impact
https://bgi.huiyadan.com/
GNU General Public License v3.0
3.71k stars 246 forks source link

All assets to singleton #343

Closed huiyadanli closed 3 months ago

huiyadanli commented 3 months ago

所有存储识别素材体的类都继承单例,方便在不同中的任务中直接调用素材

public class Singleton<T> where T : class
{
    // 使用Lazy<T>确保线程安全的延迟初始化
    private static readonly Lazy<T> _instance = new(() => CreateInstanceOfT()!, isThreadSafe: true);

    public static T Instance => _instance.Value;

    // 保护的构造函数,防止直接实例化
    protected Singleton()
    {
    }

    private static T? CreateInstanceOfT()
    {
        return Activator.CreateInstance(typeof(T), true) as T;
    }
}