void SignNode(XmlSigningNodeWriter writer) { switch (node.NodeType) { case XmlNodeType.None: break; case XmlNodeType.Element: SignStartElement(writer); for (int i = 0; i < attributeCount; i++) SignAttribute(writer, attributeNodes[i]); writer.WriteEndStartElement(node.IsEmptyElement); break; case XmlNodeType.Text: case XmlNodeType.Whitespace: case XmlNodeType.SignificantWhitespace: case XmlNodeType.CDATA: node.Value.Sign(writer); break; case XmlNodeType.XmlDeclaration: writer.WriteDeclaration(); break; case XmlNodeType.Comment: writer.WriteComment(node.Value.GetString()); break; case XmlNodeType.EndElement: SignEndElement(writer); break; default: throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new InvalidOperationException()); } }