ExtensibleSyndicationObject.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / NetFx35 / System.ServiceModel.Web / System / ServiceModel / Syndication / ExtensibleSyndicationObject.cs / 1 / ExtensibleSyndicationObject.cs

                            //------------------------------------------------------------ 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//-----------------------------------------------------------

namespace System.ServiceModel.Syndication 
{
    using System.Collections.ObjectModel; 
    using System.Collections.Generic; 
    using System.Runtime.Serialization;
    using System.Xml.Serialization; 
    using System.Xml;

    // NOTE: This class implements Clone so if you add any members, please update the copy ctor
    struct ExtensibleSyndicationObject : IExtensibleSyndicationObject 
    {
        Dictionary attributeExtensions; 
        SyndicationElementExtensionCollection elementExtensions; 

        ExtensibleSyndicationObject(ExtensibleSyndicationObject source) 
        {
            if (source.attributeExtensions != null)
            {
                this.attributeExtensions = new Dictionary(); 
                foreach (XmlQualifiedName key in source.attributeExtensions.Keys)
                { 
                    this.attributeExtensions.Add(key, source.attributeExtensions[key]); 
                }
            } 
            else
            {
                this.attributeExtensions = null;
            } 
            if (source.elementExtensions != null)
            { 
                this.elementExtensions = new SyndicationElementExtensionCollection(source.elementExtensions); 
            }
            else 
            {
                this.elementExtensions = null;
            }
        } 

        public Dictionary AttributeExtensions 
        { 
            get
            { 
                if (this.attributeExtensions == null)
                {
                    this.attributeExtensions = new Dictionary();
                } 
                return this.attributeExtensions;
            } 
        } 

        public SyndicationElementExtensionCollection ElementExtensions 
        {
            get
            {
                if (this.elementExtensions == null) 
                {
                    this.elementExtensions = new SyndicationElementExtensionCollection(); 
                } 
                return this.elementExtensions;
            } 
        }

        static XmlBuffer CreateXmlBuffer(XmlDictionaryReader unparsedExtensionsReader, int maxExtensionSize)
        { 
            XmlBuffer buffer = new XmlBuffer(maxExtensionSize);
            using (XmlDictionaryWriter writer = buffer.OpenSection(unparsedExtensionsReader.Quotas)) 
            { 
                writer.WriteStartElement(Rss20Constants.ExtensionWrapperTag);
                while (unparsedExtensionsReader.IsStartElement()) 
                {
                    writer.WriteNode(unparsedExtensionsReader, false);
                }
                writer.WriteEndElement(); 
            }
            buffer.CloseSection(); 
            buffer.Close(); 
            return buffer;
        } 

        internal void LoadElementExtensions(XmlReader readerOverUnparsedExtensions, int maxExtensionSize)
        {
            if (readerOverUnparsedExtensions == null) 
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("readerOverUnparsedExtensions"); 
            } 
            if (maxExtensionSize < 0)
            { 
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new ArgumentOutOfRangeException("maxExtensionSize"));
            }
            XmlDictionaryReader r = XmlDictionaryReader.CreateDictionaryReader(readerOverUnparsedExtensions);
            this.elementExtensions = new SyndicationElementExtensionCollection(CreateXmlBuffer(r, maxExtensionSize)); 
        }
 
 
        internal void LoadElementExtensions(XmlBuffer buffer)
        { 
            this.elementExtensions = new SyndicationElementExtensionCollection(buffer);
        }

        internal void WriteAttributeExtensions(XmlWriter writer) 
        {
            if (writer == null) 
            { 
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("writer");
            } 
            if (this.attributeExtensions != null)
            {
                foreach (XmlQualifiedName qname in this.attributeExtensions.Keys)
                { 
                    string value = this.attributeExtensions[qname];
                    writer.WriteAttributeString(qname.Name, qname.Namespace, value); 
                } 
            }
        } 

        internal void WriteElementExtensions(XmlWriter writer)
        {
            if (writer == null) 
            {
                throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("writer"); 
            } 
            if (this.elementExtensions != null)
            { 
                this.elementExtensions.WriteTo(writer);
            }
        }
 
        public ExtensibleSyndicationObject Clone()
        { 
            return new ExtensibleSyndicationObject(this); 
        }
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.


                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK