public bool use(TempDataDictionary ViewData, out T savedObject, string sessionVarName, useSessionFunc methodsetObject)
        {
            bool newData;

            savedObject = default(T);
            object sessionVar = ViewData[sessionVarName];

            if ((sessionVar == null || !(sessionVar.GetType() == typeof(T))) && methodsetObject != null)
            {
                newData = true;
                methodsetObject(out savedObject); // set saved to value
                ViewData.Add(sessionVarName, savedObject);
            }
            else
            {
                newData     = false;
                savedObject = (T)ViewData[sessionVarName];
            }

            return(newData);
        }
        /// <summary>
        /// Ensures the right type is set and returned from session
        /// </summary>
        /// <param name="Session"></param>
        /// <param name="sessionVarName"></param>
        /// <param name="methodsetObject">method where the T value is set to the session with key param:sessionVarName. If null then automatically loads value from storage</param>
        /// <returns></returns>
        public bool use(HttpSessionStateBase Session, out T savedObject, string sessionVarName, useSessionFunc methodsetObject)
        {
            bool newData;

            savedObject = default(T);
            object sessionVar = Session[sessionVarName];

            if ((sessionVar == null || !(sessionVar.GetType() == typeof(T))) && methodsetObject != null)
            {
                newData = false;
                methodsetObject(out savedObject); // set saved to value
                Session.Add(sessionVarName, savedObject);
            }
            else
            {
                newData     = false;
                savedObject = (T)Session[sessionVarName];
            }

            return(newData);
        }