public static class Singleton<T> where T : class
    {
        private static T instance = default(T);

        public static T Instance
        {

            get
            {
                if (instance == null)
                {
                    instance = typeof(T).InvokeMember(typeof(T).Name, BindingFlags.CreateInstance | BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null, null, null) as T;
                }

                return instance;
            }
        }
    }