File: System\ServiceModel\Syndication\TextSyndicationContent.cs
Project: ndp\cdf\src\WCF\ServiceModel\System.ServiceModel.csproj (System.ServiceModel)
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation.  All rights reserved.
//------------------------------------------------------------
 
namespace System.ServiceModel.Syndication
{
    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.Xml;
    using System.Xml.Schema;
    using System.Xml.Serialization;
    using System.Runtime.CompilerServices;
 
    // NOTE: This class implements Clone so if you add any members, please update the copy ctor
    [TypeForwardedFrom("System.ServiceModel.Web, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35")]
    public class TextSyndicationContent : SyndicationContent
    {
        string text;
        TextSyndicationContentKind textKind;
 
        public TextSyndicationContent(string text) : this(text, TextSyndicationContentKind.Plaintext)
        {
        }
 
        public TextSyndicationContent(string text, TextSyndicationContentKind textKind)
        {
            if (!TextSyndicationContentKindHelper.IsDefined(textKind))
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("textKind"));
            }
            this.text = text;
            this.textKind = textKind;
        }
 
        protected TextSyndicationContent(TextSyndicationContent source)
            : base(source)
        {
            if (source == null)
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("source");
            }
            this.text = source.text;
            this.textKind = source.textKind;
        }
 
        public string Text
        {
            get { return this.text; }
        }
 
        public override string Type
        {
            get
            {
                switch (this.textKind)
                {
                    case TextSyndicationContentKind.Html:
                        return Atom10Constants.HtmlType;
                    case TextSyndicationContentKind.XHtml:
                        return Atom10Constants.XHtmlType;
                    default:
                        return Atom10Constants.PlaintextType;
                }
            }
        }
 
        public override SyndicationContent Clone()
        {
            return new TextSyndicationContent(this);
        }
 
        protected override void WriteContentsTo(XmlWriter writer)
        {
            string val = this.text ?? string.Empty;
            if (this.textKind == TextSyndicationContentKind.XHtml)
            {
                writer.WriteRaw(val);
            }
            else
            {
                writer.WriteString(val);
            }
        }
    }
}