/// <summary>
        /// 快速移除一个数据源
        /// </summary>
        /// <param name="_source">要移除的源</param>
        public void RemoveSource(INavigationSourceProvider _source)
        {
            if (!m_allowAddAndRemove)
            {
                throw new Exception("无法对外来Source的NavigationBaker进行增删操作");
            }

            try
            {
                var _index = _source.GetSourceIndex();
                if (_index != -1)
                {
                    var lastIndex = sources.Count - 1;
                    sources[_index] = sources[lastIndex];
                    ((INavigationSourceProvider)sources[_index].component).WriteSourceIndex(_index);
                    sources.RemoveAt(lastIndex);

                    _source.WriteSourceIndex(-1); //以便复用
                }
            }
            catch (InvalidCastException)
            {
                throw new Exception("实现INavigationSourceProvider的类型在返回BuildSource时,必须指定component为自身");
            }
        }
        /// <summary>
        /// 往Source表中添加一个Source
        /// </summary>
        /// <param name="_source">描述了基本的位置,旋转以及大小</param>
        public void AddSource(INavigationSourceProvider _source)
        {
            if (!m_allowAddAndRemove)
            {
                throw new Exception("无法对外来Source的NavigationBaker进行增删操作");
            }

            sources.Add(_source.GetSource());
            _source.WriteSourceIndex(sources.Count - 1);
        }
        /// <summary>
        /// 更新Source表中的Source
        /// </summary>
        /// <param name="_source"></param>
        public void UpdateSource(INavigationSourceProvider _source)
        {
            if (!m_allowAddAndRemove)
            {
                throw new Exception("无法对外来Source的NavigationBaker进行增删操作");
            }

            var index = _source.GetSourceIndex();

            if (index == -1)
            {
                AddSource(_source);
            }
            else
            {
                sources[index] = _source.GetSource();
            }
        }