首页 > 编程语言 >C#中单例模板

C#中单例模板

时间:2023-09-04 11:47:29浏览次数:31  
标签:C# Dispose instance 单例 new public 模板

泛型单例

/**
 * 泛型单例模板
where 限制这个单例类必须要能被new出来
 */
public class Singleton<T> : IDisposable where T : new()
{
    private static T instance;

    public static T Instance
    {
        get {
            if (instance == null) instance = new T();
            return instance;
        }
    }

    public virtual void Dispose()
    {
        
    }
}

使用如下

public class RoleMgr:Singleton<RoleMgr>
{
    private Dictionary<string,GameObject> m_Role = new Dictionary<string, GameObject> ();

    public GameObject LoadPlayer(string name)
    {
       ````````````````
    }

    public override void Dispose()
    {
        base.Dispose();

        m_Role.Clear ();

    }
}

// 其他类中只需要使用如下代码即可调用
RoleMgr.Instance.LoadPlayer("player");

 

标签:C#,Dispose,instance,单例,new,public,模板
From: https://www.cnblogs.com/weiyanei/p/17676497.html

相关文章

  • c++ opencv 16bit tiff图像学习笔记
    1、读取图像基本信息:长、宽、通道数、灰度最大值、最小值、均值、方差值和灰度直方图#include<opencv2/opencv.hpp>usingnamespacecv;usingnamespacestd;intmain(intargc,char**argv){//读入图像Matsrc=imread("C:\\Users\\MingYi-LZQ\\Desktop\\1......
  • ThreadLocal:线程中的全局变量
    最近接了一个新需求,业务场景上需要在原有基础上新增2个字段,接口新增参数意味着很多类和方法的逻辑都需要改变,需要先判断是否属于该业务场景,再做对应的逻辑。原本的打算是在入口处新增变量,在操作数据的时候进行逻辑判断将变量进行存储或查询。如果全链路都变更入参和结构,很明显代......
  • 轻松敏捷开发流程之Scrum
    ​Scrum是一种敏捷开发流程,它旨在使软件开发更加高效和灵活。Scrum将软件开发过程分为多个短期、可重复的阶段,称为“Sprint”。每个Sprint通常为两周,旨在完成一部分开发任务。在Scrum中,有一个明确的角色分工:产品负责人(PO)负责确定产品的需求和优先级,并确保团队在Sprint中完成最......
  • css实现圆形里面感叹号
    .circle-exclamation{width:20px;height:20px;border-radius:50%;display:inline-block;background-color:#eb4d4b;}.circle-exclamation::before{content:"!";font-size:16px;color:#fff;line-height:2......
  • 力扣——1 [两数之和](https://leetcode.cn/problems/two-sum/)
    给定一个整数数组nums和一个整数目标值target,请你在该数组中找出和为目标值target的那两个整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例1:输入:nums=[2,7,11,15],tar......
  • PC端项目和移动端项目之间,根据设备类型判断相互跳转
    移动端项目配置:在index.html里添加以下代码即可<script>letsUserAgent=navigator.userAgent.toLowerCase();letisIpad=sUserAgent.match(/ipad/i)=="ipad";letisIphoneOs=sUserAgent.match(/iphoneos/i)=="iphoneos";letisMid......
  • 权限框架之jcasbin讲解
    目录1jcasbin1.1前言1.2工作原理1.2.1PERM模型1.2.2Model语法1.2.2.1Request定义1.2.2.2Policy定义1.2.2.3Policyeffect定义1.2.2.4角色定义1.2.2.5匹配器1.2.2.6完整model.conf1.2.3policy.csv1.3准备1.3.1mavan依赖1.3.2配置文件1.2.3读取权限信息进行初始化1.......
  • slice()方法详解
    JavaScript的slice()方法是一个可在数组或字符串上调用的方法,用于从数组中提取元素或从字符串中提取字符,生成一个新的数组或字符串。数组的slice()方法:语法:array.slice(start,end)参数:start:可选参数,规定从何处开始选取,如果是负数,那么它规定从数组尾部开始算起的位置,例如,-......
  • Excel多列数据转为一行数据
    wps中filter+index+row+column+iferror函数组合使用 一、函数组合    在日常办公中,经常会使用到wps处理数据,在处理数据中会使用一些函数,可以事半功倍大大提高工作效率。  wps经典函数组合:filter+index+row+column+iferror  filter函数:可以返回多条数据  index......
  • 20230529 java.lang.reflect.InvocationHandler
    介绍java.lang.reflect.InvocationHandlerpublicinterfaceInvocationHandlerAPIpublicinvokeinvokeDefault调用接口的default方法......