public static T GetObjectFromSession <T>(this HttpSessionStateBase session, INakedObjectsFramework framework, string key) where T : class
        {
            object rawValue = session[key];

            if (rawValue == null)
            {
                return(null);
            }

            if (typeof(T).IsAssignableFrom(rawValue.GetType()))
            {
                return((T)rawValue);
            }

            if (rawValue is string)
            {
                var obj = framework.GetObjectFromId((string)rawValue);

                if (typeof(T).IsAssignableFrom(obj.GetType()))
                {
                    return((T)obj);
                }
            }

            return(null);
        }
        public static object GetObjectFromSession(this HttpSessionStateBase session, INakedObjectsFramework framework, string key)
        {
            object rawValue = session[key];

            if (rawValue == null)
            {
                return(null);
            }

            if (rawValue is string)
            {
                return(framework.GetObjectFromId((string)rawValue));
            }

            return(rawValue);
        }