| File: System\Xml\Linq\XComment.cs | Web Access |
| Project: src\runtime\src\libraries\System.Private.Xml.Linq\src\System.Private.Xml.Linq.csproj (System.Private.Xml.Linq) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Threading; using System.Threading.Tasks; namespace System.Xml.Linq { /// <summary> /// Represents an XML comment. /// </summary> public class XComment : XNode { internal string value; /// <overloads> /// Initializes a new instance of the <see cref="XComment"/> class. /// </overloads> /// <summary> /// Initializes a new instance of the <see cref="XComment"/> class with the /// specified string content. /// </summary> /// <param name="value"> /// The contents of the new XComment object. /// </param> /// <exception cref="ArgumentNullException"> /// Thrown if the specified value is null. /// </exception> public XComment(string value) { ArgumentNullException.ThrowIfNull(value); this.value = value; } /// <summary> /// Initializes a new comment node from an existing comment node. /// </summary> /// <param name="other">Comment node to copy from.</param> public XComment(XComment other) { ArgumentNullException.ThrowIfNull(other); this.value = other.value; } internal XComment(XmlReader r) { value = r.Value; r.Read(); } /// <summary> /// Gets the node type for this node. /// </summary> /// <remarks> /// This property will always return XmlNodeType.Comment. /// </remarks> public override XmlNodeType NodeType { get { return XmlNodeType.Comment; } } /// <summary> /// Gets or sets the string value of this comment. /// </summary> /// <exception cref="ArgumentNullException"> /// Thrown if the specified value is null. /// </exception> public string Value { get { return value; } set { ArgumentNullException.ThrowIfNull(value); bool notify = NotifyChanging(this, XObjectChangeEventArgs.Value); this.value = value; if (notify) NotifyChanged(this, XObjectChangeEventArgs.Value); } } /// <summary> /// Write this <see cref="XComment"/> to the passed in <see cref="XmlWriter"/>. /// </summary> /// <param name="writer"> /// The <see cref="XmlWriter"/> to write this <see cref="XComment"/> to. /// </param> public override void WriteTo(XmlWriter writer) { ArgumentNullException.ThrowIfNull(writer); writer.WriteComment(value); } /// <summary> /// Write this <see cref="XComment"/> to the passed in <see cref="XmlWriter"/>. /// </summary> /// <param name="writer"> /// The <see cref="XmlWriter"/> to write this <see cref="XComment"/> to. /// </param> /// <param name="cancellationToken">A cancellation token.</param> public override Task WriteToAsync(XmlWriter writer, CancellationToken cancellationToken) { ArgumentNullException.ThrowIfNull(writer); if (cancellationToken.IsCancellationRequested) return Task.FromCanceled(cancellationToken); return writer.WriteCommentAsync(value); } internal override XNode CloneNode() { return new XComment(this); } internal override bool DeepEquals(XNode node) { XComment? other = node as XComment; return other != null && value == other.value; } internal override int GetDeepHashCode() { return value.GetHashCode(); } } }