/// <summary>
        /// 创建目录树,并确定命名空间,类型,成员对应的页面的文件名
        /// </summary>
        /// <returns></returns>
        private void CreateContentTree()
        {
            int pageCount = 0;

            foreach (Type type in DataProvider.GetSelectedTypes())
            {
                ContentTreeItem nsItem = null, typeParentItem = null;
                string          typeParentName = "";
                nsItem = _root.Find(type.Namespace);
                if (nsItem == null)
                {
                    string nsPageFileName = (++pageCount).ToString("000000") + Resources.Extension;
                    _root.Add(nsItem = new ContentTreeItem(type.Namespace, nsPageFileName));
                    if (!string.IsNullOrEmpty(type.Namespace))
                    {
                        _namespaceFileName.Add(type.Namespace, nsPageFileName);
                    }
                }
                if (type.IsClass)
                {
                    typeParentName = "Class";
                }
                else if (type.IsEnum)
                {
                    typeParentName = "Enumeration";
                }
                else if (type.IsValueType)
                {
                    typeParentName = "Structure";
                }
                else if (type.IsInterface)
                {
                    typeParentName = "Interface";
                }
                else
                {
                    typeParentName = "Delegate";
                }
                typeParentItem = nsItem.Find(typeParentName);
                if (typeParentItem == null)
                {
                    nsItem.Add(typeParentItem = new ContentTreeItem(typeParentName, ""));
                }
                ContentTreeItem typeItem = new ContentTreeItem(DocumentBuilderUtility.GetTypeDefinition(type, false), (++pageCount).ToString("000000") + Resources.Extension, type);
                _memberFileName.Add(DocumentBuilderUtility.GetMemberID(type), typeItem.FileName);
                typeParentItem.Add(typeItem);
                foreach (MemberInfo memberInfo in DataProvider.GetTypeSelectedMembers(type))
                {
                    string parentItemName = "";
                    #region 添加成员
                    switch (memberInfo.MemberType)
                    {
                    case MemberTypes.Constructor:
                    {
                        parentItemName = "Constructor";
                        break;
                    }

                    case MemberTypes.Method:
                    {
                        MethodInfo method = memberInfo as MethodInfo;
                        if (!method.IsSpecialName)
                        {
                            if (method.IsPublic)
                            {
                                parentItemName = "PublicMethod";
                            }
                            else if (method.IsPrivate)
                            {
                                parentItemName = "PrivateMethod";
                            }
                            else
                            {
                                parentItemName = "ProtectedMethod";
                            }
                        }
                        break;
                    }

                    case MemberTypes.Field:
                    {
                        FieldInfo field = memberInfo as FieldInfo;
                        if (field.IsPublic)
                        {
                            parentItemName = "PublicField";
                        }
                        else if (field.IsPrivate)
                        {
                            parentItemName = "PrivateField";
                        }
                        else
                        {
                            parentItemName = "ProtectedField";
                        }
                        break;
                    }

                    case MemberTypes.Property:
                    {
                        PropertyInfo property = memberInfo as PropertyInfo;
                        MethodInfo   pm       = property.GetGetMethod(true);
                        if (pm == null)
                        {
                            pm = property.GetSetMethod(true);
                        }
                        if (pm != null)
                        {
                            if (pm.IsPublic)
                            {
                                parentItemName = "PublicProperty";
                            }
                            else if (pm.IsPrivate)
                            {
                                parentItemName = "PrivateProperty";
                            }
                            else
                            {
                                parentItemName = "ProtectedProperty";
                            }
                        }
                        break;
                    }

                    case MemberTypes.Event:
                    {
                        parentItemName = "Event";
                        break;
                    }
                    }
                    if (!string.IsNullOrEmpty(parentItemName))
                    {
                        ContentTreeItem parentItem = typeItem.Find(parentItemName);
                        if (parentItem == null)
                        {
                            parentItem = new ContentTreeItem(parentItemName, typeItem.FileName + "#" + parentItemName);
                            typeItem.Add(parentItem);
                        }
                        if (memberInfo.MemberType == MemberTypes.Constructor)
                        {
                            string fileName = (++pageCount).ToString("000000") + Resources.Extension;
                            parentItem.Add(new ContentTreeItem(DocumentBuilderUtility.GetTypeDefinition(memberInfo.ReflectedType, false), fileName, memberInfo));
                        }
                        else
                        {
                            string fileName = _memberFileName[DocumentBuilderUtility.GetMemberID(memberInfo)] as string;
                            if (string.IsNullOrEmpty(fileName))
                            {
                                fileName = (++pageCount).ToString("000000") + Resources.Extension;
                                _memberFileName.Add(DocumentBuilderUtility.GetMemberID(memberInfo), fileName);
                            }
                            parentItem.Add(new ContentTreeItem(memberInfo.Name, fileName, memberInfo));
                        }
                    }
                    #endregion
                }
            }
            _root.Sort();
            _total = pageCount;
        }