Exemple #1
0
        /// <summary>
        /// Constructor
        /// </summary>
        static WlyViewMgr()
        {
            var        types    = typeof(WlyViewMgr).Assembly.GetTypes();
            IWlyUIView mainView = null;

            foreach (var t in types)
            {
                if (!typeof(WlyUIViewBase).IsAssignableFrom(t) || t.IsAbstract)
                {
                    continue;
                }

                var attribute = t.GetCustomAttribute <WlyViewAttribute>();
                if ((attribute == null) && !t.IsAbstract)
                {
                    throw new InvalidOperationException($"界面{t.Name}没有附加界面属性");
                }

                var view = Activator.CreateInstance(t) as IWlyUIView;
                _viewList.Add(view);

                if ((view != null) && (view.Type == WlyViewType.场景_主界面))
                {
                    view.Level = 0;
                    mainView   = view;
                }
            }

            // 界面检查
            foreach (var v in Enum.GetValues(typeof(WlyViewType)))
            {
                if (Equals(v, WlyViewType.Unknow))
                {
                    continue;
                }

                if (_viewList.FirstOrDefault(o => Equals(o.Type, v)) == null)
                {
                    throw new InvalidOperationException($"没有定义界面 {v}");
                }
            }

            if (mainView == null)
            {
                throw new InvalidOperationException("未定义主界面");
            }

            mainView.Init();
            _viewList = _viewList.OrderByDescending(o => o.Level).ToList();
        }