public virtual T GetSession <T>() where T : class, IAuthSession, new() { if (userSession != null) { return((T)userSession); } if (SessionKey != null) { userSession = Cache.Get <T>(SessionKey); } else { SessionFeature.CreateSessionIds(); } var unAuthorizedSession = new T(); return((T)(userSession ?? (userSession = unAuthorizedSession))); }