184 lines
5.7 KiB
C#
184 lines
5.7 KiB
C#
|
//------------------------------------------------------------
|
||
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||
|
//------------------------------------------------------------
|
||
|
|
||
|
namespace System.ServiceModel.Syndication
|
||
|
{
|
||
|
using System.Collections.ObjectModel;
|
||
|
using System.Runtime.Serialization;
|
||
|
using System.Xml.Serialization;
|
||
|
using System.Collections.Generic;
|
||
|
using System.Xml;
|
||
|
using System.Runtime.CompilerServices;
|
||
|
|
||
|
[TypeForwardedFrom("System.ServiceModel.Web, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35")]
|
||
|
public class ResourceCollectionInfo : IExtensibleSyndicationObject
|
||
|
{
|
||
|
static IEnumerable<string> singleEmptyAccept;
|
||
|
Collection<string> accepts;
|
||
|
Uri baseUri;
|
||
|
Collection<CategoriesDocument> categories;
|
||
|
ExtensibleSyndicationObject extensions = new ExtensibleSyndicationObject();
|
||
|
Uri link;
|
||
|
TextSyndicationContent title;
|
||
|
|
||
|
public ResourceCollectionInfo()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
public ResourceCollectionInfo(string title, Uri link)
|
||
|
: this((title == null) ? null : new TextSyndicationContent(title), link)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
public ResourceCollectionInfo(TextSyndicationContent title, Uri link)
|
||
|
: this(title, link, null, null)
|
||
|
{
|
||
|
}
|
||
|
|
||
|
public ResourceCollectionInfo(TextSyndicationContent title, Uri link, IEnumerable<CategoriesDocument> categories, bool allowsNewEntries)
|
||
|
: this(title, link, categories, (allowsNewEntries) ? null : CreateSingleEmptyAccept())
|
||
|
{
|
||
|
}
|
||
|
|
||
|
public ResourceCollectionInfo(TextSyndicationContent title, Uri link, IEnumerable<CategoriesDocument> categories, IEnumerable<string> accepts)
|
||
|
{
|
||
|
if (title == null)
|
||
|
{
|
||
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("title");
|
||
|
}
|
||
|
if (link == null)
|
||
|
{
|
||
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("link");
|
||
|
}
|
||
|
this.title = title;
|
||
|
this.link = link;
|
||
|
if (categories != null)
|
||
|
{
|
||
|
this.categories = new NullNotAllowedCollection<CategoriesDocument>();
|
||
|
foreach (CategoriesDocument category in categories)
|
||
|
{
|
||
|
this.categories.Add(category);
|
||
|
}
|
||
|
}
|
||
|
if (accepts != null)
|
||
|
{
|
||
|
this.accepts = new NullNotAllowedCollection<string>();
|
||
|
foreach (string accept in accepts)
|
||
|
{
|
||
|
this.accepts.Add(accept);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public Collection<string> Accepts
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
if (this.accepts == null)
|
||
|
{
|
||
|
this.accepts = new NullNotAllowedCollection<string>();
|
||
|
}
|
||
|
return this.accepts;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public Dictionary<XmlQualifiedName, string> AttributeExtensions
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
return this.extensions.AttributeExtensions;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public Uri BaseUri
|
||
|
{
|
||
|
get { return this.baseUri; }
|
||
|
set { this.baseUri = value; }
|
||
|
}
|
||
|
|
||
|
public Collection<CategoriesDocument> Categories
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
if (this.categories == null)
|
||
|
{
|
||
|
this.categories = new NullNotAllowedCollection<CategoriesDocument>();
|
||
|
}
|
||
|
return this.categories;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public SyndicationElementExtensionCollection ElementExtensions
|
||
|
{
|
||
|
get
|
||
|
{
|
||
|
return this.extensions.ElementExtensions;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
public Uri Link
|
||
|
{
|
||
|
get { return this.link; }
|
||
|
set { this.link = value; }
|
||
|
}
|
||
|
|
||
|
public TextSyndicationContent Title
|
||
|
{
|
||
|
get { return this.title; }
|
||
|
set { this.title = value; }
|
||
|
}
|
||
|
|
||
|
protected internal virtual InlineCategoriesDocument CreateInlineCategoriesDocument()
|
||
|
{
|
||
|
return new InlineCategoriesDocument();
|
||
|
}
|
||
|
|
||
|
protected internal virtual ReferencedCategoriesDocument CreateReferencedCategoriesDocument()
|
||
|
{
|
||
|
return new ReferencedCategoriesDocument();
|
||
|
}
|
||
|
|
||
|
protected internal virtual bool TryParseAttribute(string name, string ns, string value, string version)
|
||
|
{
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
protected internal virtual bool TryParseElement(XmlReader reader, string version)
|
||
|
{
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
protected internal virtual void WriteAttributeExtensions(XmlWriter writer, string version)
|
||
|
{
|
||
|
this.extensions.WriteAttributeExtensions(writer);
|
||
|
}
|
||
|
|
||
|
protected internal virtual void WriteElementExtensions(XmlWriter writer, string version)
|
||
|
{
|
||
|
this.extensions.WriteElementExtensions(writer);
|
||
|
}
|
||
|
|
||
|
internal void LoadElementExtensions(XmlReader readerOverUnparsedExtensions, int maxExtensionSize)
|
||
|
{
|
||
|
this.extensions.LoadElementExtensions(readerOverUnparsedExtensions, maxExtensionSize);
|
||
|
}
|
||
|
|
||
|
internal void LoadElementExtensions(XmlBuffer buffer)
|
||
|
{
|
||
|
this.extensions.LoadElementExtensions(buffer);
|
||
|
}
|
||
|
|
||
|
static IEnumerable<string> CreateSingleEmptyAccept()
|
||
|
{
|
||
|
if (singleEmptyAccept == null)
|
||
|
{
|
||
|
List<string> tmp = new List<string>(1);
|
||
|
tmp.Add(string.Empty);
|
||
|
singleEmptyAccept = tmp.AsReadOnly();
|
||
|
}
|
||
|
return singleEmptyAccept;
|
||
|
}
|
||
|
}
|
||
|
}
|