private bool TryGetWindow <T> (int _id, out T _win) where T : WindowViewBase, new()
        {
            bool           get        = false;
            WindowViewBase windowBase = null;

            if (!windowDict.TryGetValue(_id, out windowBase))
            {
                RefWindowConfig config = null;
                if (RefWindowConfig.TryGet(_id, out config))
                {
                    _win            = new T();
                    windowDict[_id] = _win;
                    get             = true;
                }
                else
                {
                    _win = null;
                    get  = false;
                }
            }
            else
            {
                _win = (T)windowBase;
                get  = true;
            }

            return(get);
        }
        private bool CheckOpen(int _id)
        {
            WindowViewBase win = null;

            if (TryGetWindow(_id, out win))
            {
                return(win.windowState == WindowViewBase.WindowState.Opened);
            }
            else
            {
                return(false);
            }
        }
        /// <summary>
        /// 销毁窗口
        /// </summary>
        /// <typeparam name="T"></typeparam>
        public void DestroyWin(int _id)
        {
            WindowViewBase win = null;

            if (TryGetWindow(_id, out win))
            {
                windowDict.Remove(_id);
                win.DoDestroy();
            }
            else
            {
                WDebug.Log(string.Format("Id为:{0}的窗口无法获得!", _id));
            }
        }
        /// <summary>
        /// 关闭窗口
        /// </summary>
        /// <typeparam name="T"></typeparam>
        public WindowViewBase Close(int _id)
        {
            WindowViewBase win = null;

            if (TryGetWindow(_id, out win))
            {
                if (win.windowState == WindowViewBase.WindowState.Opened)
                {
                    win.Close();
                }
                else
                {
                    WDebug.Log(string.Format("Id为:{0}的窗口已经关闭!", _id));
                }
            }
            else
            {
                WDebug.Log(string.Format("Id为:{0}的窗口无法获得!", _id));
            }

            return(win);
        }
        /// <summary>
        /// 打开窗口
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <returns></returns>
        public T Open <T> (int _id) where T : WindowViewBase, new()
        {
            WindowViewBase win = null;

            if (TryGetWindow(_id, out win))
            {
                if (win.windowState == WindowViewBase.WindowState.Closed)
                {
                    CloseOtherNormalWindow(_id);
                    win.Open(_id);
                }
                else
                {
                    WDebug.Log(string.Format("Id为:{0}的窗口已经打开!", _id));
                }
            }
            else
            {
                WDebug.Log(string.Format("Id为:{0}的窗口无法获得!", _id));
            }

            return((T)win);
        }