#region Using directives
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
#endregion
namespace GenericsSingleton
{
///
1<summary>
2/// 单例范型
3/// </summary>
///
1<typeparam name="T"></typeparam>
public class Singleton
1<t>
2{
3private static T _instance;
4
5public Singleton()
6{
7}
8
9public static T Instance
10{
11get
12{
13if (_instance == null)
14{
15
16//获得实例,使用这个方法的前提是T要有公有的、无参数的构造函数
17
18_instance = (T)System.Activator.CreateInstance(typeof(T));
19}
20return _instance;
21}
22}
23}
24
25/// <summary>
26/// 要实现单例的类
27/// </summary>
28public class Foo
29{
30private int count = 0;
31
32public int Count
33{
34get
35{
36count++;
37return count;
38}
39}
40}
41
42/// <summary>
43/// 主函数
44/// </summary>
45class Program
46{
47static void Main(string[] args)
48{
49//连续调用三次如果值是递增的话说明三次调用都是同一个实例
50Console.WriteLine(Singleton<foo>.Instance.Count);
51Console.WriteLine(Singleton<foo>.Instance.Count);
52Console.WriteLine(Singleton<foo>.Instance.Count);
53
54Console.ReadLine();
55}
56}
57}</foo></foo></foo></t>