namespace System
{
/// <summary>
/// 为指定的实例创建有线程安全的单例模式。实例必须有一个公开的,无参数的构造方法,并且能正确的被实例化。
/// </summary>
/// <typeparam name="T">作为单例的对象。</typeparam>
public static class Singleton<T>
where T : class
{
static volatile T _instance;
static object _lock = new object();
/// <summary>
/// 为指定对象创建实例。
/// </summary>
public static T CreateInstance()
{
if (_instance == null)
{
lock (_lock)
{
if (_instance == null)
{
_instance = Activator.CreateInstance<T>();
}
}
}
return _instance;
}
}
}