private DocTreeNode BuildTree(DirectoryInfo directory) { if (null == directory) { return(null); } DocTreeNode root = new DocTreeNode(config.GetDocPath(), directory); foreach (var file in directory.GetFileSystemInfos().OrderBy(i => i.Name, new FileNameComparer())) { if (file is FileInfo) { root.AppendNode(new DocTreeNode(config.GetDocPath(), file)); } else { var dnode = BuildTree((DirectoryInfo)file); if (null != dnode) { root.AppendNode(dnode); } } } return(root); }