单例模式——继承使用方式

namespace Feng.FramWorkDesign
{
public class Singleton<T> where T: Singleton<T>
{
private static T mInstance;
public static T MInstance
{
get
{
if (mInstance==null)
{
var type = typeof(T);
var ctors = type.GetConstructors(BindingFlags.Instance | BindingFlags.NonPublic);
var ctor = Array.Find(ctors, c => c.GetParameters().Length == 0);

if (ctor==null)
{
throw new Exception("Non Public Constructor Not Fount in "+type.Name);
}

mInstance= ctor.Invoke(null) as T;
}
return mInstance;
}
}
}
}
posted @ 2023-08-24 17:49  Trigger_F  阅读(25)  评论(0编辑  收藏  举报