惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Attack and Defense Labs
Attack and Defense Labs
T
Threatpost
C
Cybersecurity and Infrastructure Security Agency CISA
H
Hackread – Cybersecurity News, Data Breaches, AI and More
I
Intezer
C
Cyber Attacks, Cyber Crime and Cyber Security
The Register - Security
The Register - Security
量子位
Security Latest
Security Latest
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
大猫的无限游戏
大猫的无限游戏
小众软件
小众软件
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
C
CXSECURITY Database RSS Feed - CXSecurity.com
MyScale Blog
MyScale Blog
J
Java Code Geeks
Apple Machine Learning Research
Apple Machine Learning Research
Google DeepMind News
Google DeepMind News
WordPress大学
WordPress大学
Spread Privacy
Spread Privacy
Jina AI
Jina AI
博客园 - 【当耐特】
P
Palo Alto Networks Blog
Last Week in AI
Last Week in AI
SecWiki News
SecWiki News
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
G
GRAHAM CLULEY
宝玉的分享
宝玉的分享
Hacker News - Newest:
Hacker News - Newest: "LLM"
T
The Blog of Author Tim Ferriss
V
Vulnerabilities – Threatpost
有赞技术团队
有赞技术团队
T
Tor Project blog
H
Hacker News: Front Page
A
Arctic Wolf
NISL@THU
NISL@THU
A
About on SuperTechFans
云风的 BLOG
云风的 BLOG
Engineering at Meta
Engineering at Meta
V
V2EX
N
News and Events Feed by Topic
Webroot Blog
Webroot Blog
Know Your Adversary
Know Your Adversary
P
Privacy International News Feed
I
InfoQ
D
Docker
L
LINUX DO - 最新话题
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
U
Unit 42

博客园 - rex

C#编译javascript - JQuery模板 将C#编译为javascript TouchPad App - Advanced Calculator TouchPad App - Unit converter webOS App - Simple Unit Convert 在javascript库中整合Sizzle(Sizzle引擎的使用) source code upload to google code RexStudio2.0RC c# 2.0 Factory的实现 Emit生成Property .NET 分布式事务处理 Castle IoC castle 五子棋:) *.ashx:HttpHandler的另一种用法 自己制作的ORMap框架终于完成的差不多了。 VStudio 2003 remote debug Application Container AOP static crosscutting 的一个实现
C#2.0 Singleton 的实现
rex · 2006-01-12 · via 博客园 - rex

利用c#2.0的范型加上一点反射,构造了一个自认为不错的Singleton实现.

public class Singleton<T>
    
{
        
protected Singleton()
        
{
             
//Assert class T don't have public constructor
             
//Assert class T have a private/protected parameterless constructor
        }


        
protected static T _instance;
        
public static T Instance()
        
{
            
//Assert class T don't have public constructor
            
//Assert class T have a private/protected parameterless constructor
            
//Assert class T is not abstract and is not an interface

            
if (_instance == null)
            
{
                    _instance 
= (T)Activator.CreateInstance(typeof(T),true);//use reflection to create instance of T
            }

            
return _instance;
        }


        
public void Destroy()
        
{
            _instance 
= default(T);
        }

    }

使用也很方便;例如

class Foo
{
    
private Foo()//must declare,or assert will fail in the singleton class
    {
    }

    
    
public void Bar()
    
{
        
    }

}




void Test()
{
    Singleton
<Foo>.Instance().Bar();
}

甚至可以这样定义一个类:

public class Foo : Singleton<Foo>
{
    
protected Foo()//must declare
    {
    }

    
    
public void Bar()
    
{
        
    }

}





void Test()
{
    Foo.Instance().Bar();
}