大哥 ,为什么下不到你改的源码,偶的mail:kinbor@gmail.com 谢谢 还有一个事有人改了这个代码,实现某些默认方法不显示,但没效果,我跟了下也不知道问题在哪里 在MsdnDocumenter.cs中的方法:MakeHtmlForMethods。修改如下: private void MakeHtmlForMethods(WhichType whichType, XmlNode typeNode) { XmlNodeList declaredMethodNodes = typeNode.SelectNodes("method[not(@declaringType)]"); if (declaredMethodNodes.Count > 0) { bool bOverloaded = false; string fileName; string typeName = typeNode.Attributes["name"].Value; string typeID = typeNode.Attributes["id"].Value; XmlNodeList methodNodes = typeNode.SelectNodes("method"); int nNodes = methodNodes.Count; int[] indexes = SortNodesByAttribute(methodNodes, "id"); fileName = GetFilenameForMethods(whichType, typeNode); htmlHelp.AddFileToContents("Methods", fileName); XsltArgumentList arguments = new XsltArgumentList(); arguments.AddParam("id", String.Empty, typeID); arguments.AddParam("member-type", String.Empty, "method"); TransformAndWriteResult(xsltIndividualMembers, arguments, fileName); htmlHelp.OpenBookInContents(); // 鞠强添加的部分 string[] skipped = new string[]{"Equals","Finalize","GetHashCode","GetType","MemberwiseClone","ToString","GetObject"}; // 添加完成 for (int i = 0; i < nNodes; i++) { XmlNode methodNode = methodNodes[indexes[i]]; string methodName = (string)methodNode.Attributes["name"].Value; string methodID = (string)methodNode.Attributes["id"].Value; // 鞠强修改: // 目的是不显示如下7个Object的方法: // Equals // Finalize // GetHashCode // GetType // MemberwiseClone // ToString // GetObject int qq = 0; for(qq=0;qq<skipped.Length;qq++) { // 如果在上述范围之内,就不处理 if(methodName == skipped[qq])break; } if(qq<skipped.Length)continue; // 修改完毕 if (IsMethodFirstOverload(methodNodes, indexes, i)) { bOverloaded = true; fileName = GetFilenameForMethodOverloads(typeNode, methodNode); htmlHelp.AddFileToContents(methodName + " Method", fileName); arguments = new XsltArgumentList(); arguments.AddParam("member-id", String.Empty, methodID); TransformAndWriteResult(xsltMemberOverload, arguments, fileName); htmlHelp.OpenBookInContents(); } if (methodNode.Attributes["declaringType"] == null) { fileName = GetFilenameForMethod(methodNode); if (bOverloaded) { XmlNodeList parameterNodes = xmlDocumentation.SelectNodes("/ndoc/assembly/module/namespace/" + lowerCaseTypeNames[whichType] + "[@name="" + typeName + ""]/method[@id="" + methodID + ""]/parameter"); htmlHelp.AddFileToContents(methodName + " Method " + GetParamList(parameterNodes), fileName, HtmlHelpIcon.Page ); } else { htmlHelp.AddFileToContents(methodName + " Method", fileName, HtmlHelpIcon.Page ); } XsltArgumentList arguments2 = new XsltArgumentList(); arguments2.AddParam("member-id", String.Empty, methodID); TransformAndWriteResult(xsltMember, arguments2, fileName); } if (bOverloaded && IsMethodLastOverload(methodNodes, indexes, i)) { bOverloaded = false; htmlHelp.CloseBookInContents(); } } htmlHelp.CloseBookInContents(); } }