C# 遇到一个奇怪单例模式的类,如何实例化

求教这样的单例 QQAuthApi 可以用什么方式实例化

public class Singleton<T>
    {
        protected static T sInstance = New();

        protected Singleton() { }

        public static T Instance
        {
            get { return sInstance; }
        }

        private static T New()
        {
            Type t = typeof(T);
            BindingFlags flags = BindingFlags.NonPublic | BindingFlags.CreateInstance | BindingFlags.Instance | BindingFlags.OptionalParamBinding;
            return (T)Activator.CreateInstance(t, flags, null, null, CultureInfo.CurrentCulture);
        }
    }
public class QQAuthApi : Singleton<QQsAuthApi>
    {
        public ThirdUserInfo Login(string qqsSid)
        {
            return AccountUtil.QQSidLogin(qqsSid);
        }
    }
阅读 2.4k
2 个回答

不需要实例化,直接可以用 QQAuthApi.Instance

QQAuthApi继承自Singleton并且指定泛型为它自己,而singleton下的获取实例的方法为new(),而instance的get里通过new来获取的实例,所以,你可以通过

var api = QQAuthApi.Instance;

来获取它的实例。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进