/// <summary> /// Predicate delegate that returns a value indicating if the supplied <see cref="ISyndicationExtension"/> /// represents the same <see cref="Type"/> as this <see cref="SyndicationExtension"/>. /// </summary> /// <param name="extension">The <see cref="ISyndicationExtension"/> to be compared.</param> /// <returns><b>true</b> if the <paramref name="extension"/> is the same <see cref="Type"/> as this <see cref="SyndicationExtension"/>; otherwise, <b>false</b>.</returns> /// <exception cref="ArgumentNullException">The <paramref name="extension"/> is a null reference (Nothing in Visual Basic).</exception> public static bool MatchByType(ISyndicationExtension extension) { //------------------------------------------------------------ // Validate parameter //------------------------------------------------------------ Guard.ArgumentNotNull(extension, "extension"); //------------------------------------------------------------ // Determine if search condition was met //------------------------------------------------------------ return extension.GetType() == typeof (SDataHttpExtension); }
//============================================================ // EXTENSIBILITY METHODS //============================================================ #region AddExtension(ISyndicationExtension extension) /// <summary> /// Adds the supplied <see cref="ISyndicationExtension"/> to the current instance's <see cref="IExtensibleSyndicationObject.Extensions"/> collection. /// </summary> /// <param name="extension">The <see cref="ISyndicationExtension"/> to be added.</param> /// <returns><b>true</b> if the <see cref="ISyndicationExtension"/> was added to the <see cref="IExtensibleSyndicationObject.Extensions"/> collection, otherwise <b>false</b>.</returns> /// <exception cref="ArgumentNullException">The <paramref name="extension"/> is a null reference (Nothing in Visual Basic).</exception> public bool AddExtension(ISyndicationExtension extension) { //------------------------------------------------------------ // Local members //------------------------------------------------------------ bool wasAdded = false; //------------------------------------------------------------ // Validate parameter //------------------------------------------------------------ Guard.ArgumentNotNull(extension, "extension"); //------------------------------------------------------------ // Add syndication extension to collection //------------------------------------------------------------ ((Collection <ISyndicationExtension>) this.Extensions).Add(extension); wasAdded = true; return(wasAdded); }
/// <summary> /// Modifies the <see cref="IExtensibleSyndicationObject"/> to match the data source. /// </summary> /// <param name="entity">The <see cref="IExtensibleSyndicationObject"/> to be filled.</param> /// <param name="manager">The <see cref="XmlNamespaceManager"/> used to resolve prefixed syndication elements and attributes.</param> /// <exception cref="ArgumentNullException">The <paramref name="entity"/> is a null reference (Nothing in Visual Basic).</exception> /// <exception cref="ArgumentNullException">The <paramref name="manager"/> is a null reference (Nothing in Visual Basic).</exception> public void Fill(IExtensibleSyndicationObject entity, XmlNamespaceManager manager) { //------------------------------------------------------------ // Local members //------------------------------------------------------------ Collection <ISyndicationExtension> extensions = new Collection <ISyndicationExtension>(); //------------------------------------------------------------ // Validate parameters //------------------------------------------------------------ Guard.ArgumentNotNull(entity, "entity"); Guard.ArgumentNotNull(manager, "manager"); //------------------------------------------------------------ // Get syndication extensions supported by the load operation //------------------------------------------------------------ if (this.Settings.AutoDetectExtensions) { extensions = SyndicationExtensionAdapter.GetExtensions(this.Settings.SupportedExtensions, (Dictionary <string, string>) this.Navigator.GetNamespacesInScope(XmlNamespaceScope.ExcludeXml)); } else { extensions = SyndicationExtensionAdapter.GetExtensions(this.Settings.SupportedExtensions); } //------------------------------------------------------------ // Add syndication extensions to entity if they exist in source //------------------------------------------------------------ foreach (ISyndicationExtension extension in extensions) { if (extension.ExistsInSource(this.Navigator) && extension.GetType() != entity.GetType()) { ISyndicationExtension instance = (ISyndicationExtension)Activator.CreateInstance(extension.GetType()); if (instance.Load(this.Navigator)) { ((Collection <ISyndicationExtension>)entity.Extensions).Add(instance); } } } }
/// <summary> /// Removes the supplied <see cref="ISyndicationExtension"/> from the current instance's <see cref="IExtensibleSyndicationObject.Extensions"/> collection. /// </summary> /// <param name="extension">The <see cref="ISyndicationExtension"/> to be removed.</param> /// <returns><b>true</b> if the <see cref="ISyndicationExtension"/> was removed from the <see cref="IExtensibleSyndicationObject.Extensions"/> collection, otherwise <b>false</b>.</returns> /// <remarks> /// If the <see cref="Extensions"/> collection of the current instance does not contain the specified <see cref="ISyndicationExtension"/>, will return <b>false</b>. /// </remarks> /// <exception cref="ArgumentNullException">The <paramref name="extension"/> is a null reference (Nothing in Visual Basic).</exception> public bool RemoveExtension(ISyndicationExtension extension) { //------------------------------------------------------------ // Local members //------------------------------------------------------------ bool wasRemoved = false; //------------------------------------------------------------ // Validate parameter //------------------------------------------------------------ Guard.ArgumentNotNull(extension, "extension"); //------------------------------------------------------------ // Remove syndication extension from collection //------------------------------------------------------------ if (((Collection <ISyndicationExtension>) this.Extensions).Contains(extension)) { ((Collection <ISyndicationExtension>) this.Extensions).Remove(extension); wasRemoved = true; } return(wasRemoved); }
/// <summary> /// Writes the prefixed XML namespace declarations for the supplied <see cref="Collection{T}"/> collection of syndication extension <see cref="Type"/> objects to the specified <see cref="XmlWriter"/>. /// </summary> /// <param name="types">A <see cref="Collection{T}"/> collection of <see cref="Type"/> objects that represent the syndication extensions to write prefixed XML namespace declarations for.</param> /// <param name="writer">The <see cref="XmlWriter"/> to which you want to save.</param> /// <exception cref="ArgumentNullException">The <paramref name="types"/> is a null reference (Nothing in Visual Basic).</exception> /// <exception cref="ArgumentNullException">The <paramref name="writer"/> is a null reference (Nothing in Visual Basic).</exception> public static void WriteXmlNamespaceDeclarations(Collection <Type> types, XmlWriter writer) { //------------------------------------------------------------ // Validate parameters //------------------------------------------------------------ Guard.ArgumentNotNull(types, "types"); Guard.ArgumentNotNull(writer, "writer"); //------------------------------------------------------------ // Write each syndication extension prefixed XML namespace // to the supplied writer //------------------------------------------------------------ foreach (Type type in types) { if (type != null) { ISyndicationExtension extension = Activator.CreateInstance(type) as ISyndicationExtension; if (extension != null) { extension.WriteXmlNamespaceDeclaration(writer); } } } }
/// <summary> /// Removes the supplied <see cref="ISyndicationExtension"/> from the current instance's <see cref="IExtensibleSyndicationObject.Extensions"/> collection. /// </summary> /// <param name="extension">The <see cref="ISyndicationExtension"/> to be removed.</param> /// <returns><b>true</b> if the <see cref="ISyndicationExtension"/> was removed from the <see cref="IExtensibleSyndicationObject.Extensions"/> collection, otherwise <b>false</b>.</returns> /// <remarks> /// If the <see cref="Extensions"/> collection of the current instance does not contain the specified <see cref="ISyndicationExtension"/>, will return <b>false</b>. /// </remarks> /// <exception cref="ArgumentNullException">The <paramref name="extension"/> is a null reference (Nothing in Visual Basic).</exception> public bool RemoveExtension(ISyndicationExtension extension) { //------------------------------------------------------------ // Local members //------------------------------------------------------------ bool wasRemoved = false; //------------------------------------------------------------ // Validate parameter //------------------------------------------------------------ Guard.ArgumentNotNull(extension, "extension"); //------------------------------------------------------------ // Remove syndication extension from collection //------------------------------------------------------------ if (((Collection<ISyndicationExtension>)this.Extensions).Contains(extension)) { ((Collection<ISyndicationExtension>)this.Extensions).Remove(extension); wasRemoved = true; } return wasRemoved; }
/// <summary> /// Adds the supplied <see cref="ISyndicationExtension"/> to the current instance's <see cref="IExtensibleSyndicationObject.Extensions"/> collection. /// </summary> /// <param name="extension">The <see cref="ISyndicationExtension"/> to be added.</param> /// <returns><b>true</b> if the <see cref="ISyndicationExtension"/> was added to the <see cref="IExtensibleSyndicationObject.Extensions"/> collection, otherwise <b>false</b>.</returns> /// <exception cref="ArgumentNullException">The <paramref name="extension"/> is a null reference (Nothing in Visual Basic).</exception> public bool AddExtension(ISyndicationExtension extension) { //------------------------------------------------------------ // Local members //------------------------------------------------------------ bool wasAdded = false; //------------------------------------------------------------ // Validate parameter //------------------------------------------------------------ Guard.ArgumentNotNull(extension, "extension"); //------------------------------------------------------------ // Add syndication extension to collection //------------------------------------------------------------ ((Collection<ISyndicationExtension>)this.Extensions).Add(extension); wasAdded = true; return wasAdded; }
/// <summary> /// Initializes a new instance of the <see cref="SyndicationExtensionLoadedEventArgs"/> class using the supplied <see cref="IXPathNavigable"/> and <see cref="ISyndicationExtension"/>. /// </summary> /// <param name="data">A <see cref="IXPathNavigable"/> object that represents the XML data that was used to load the syndication extension.</param> /// <param name="extension"> /// A <see cref="ISyndicationExtension"/> that represents the syndication extension after the load operation completed. /// </param> /// <exception cref="ArgumentNullException">The <paramref name="data"/> is a null reference (Nothing in Visual Basic).</exception> /// <exception cref="ArgumentNullException">The <paramref name="extension"/> is a null reference (Nothing in Visual Basic).</exception> public SyndicationExtensionLoadedEventArgs(IXPathNavigable data, ISyndicationExtension extension) : this(data) { //------------------------------------------------------------ // Validate parameters //------------------------------------------------------------ Guard.ArgumentNotNull(extension, "extension"); eventExtension = extension; }
/// <summary> /// Predicate delegate that returns a value indicating if the supplied <see cref="ISyndicationExtension"/> /// represents the same <see cref="Type"/> as this <see cref="SyndicationExtension"/>. /// </summary> /// <param name="extension">The <see cref="ISyndicationExtension"/> to be compared.</param> /// <returns><b>true</b> if the <paramref name="extension"/> is the same <see cref="Type"/> as this <see cref="SyndicationExtension"/>; otherwise, <b>false</b>.</returns> /// <exception cref="ArgumentNullException">The <paramref name="extension"/> is a null reference (Nothing in Visual Basic).</exception> public static bool MatchByType(ISyndicationExtension extension) { //------------------------------------------------------------ // Validate parameter //------------------------------------------------------------ Guard.ArgumentNotNull(extension, "extension"); //------------------------------------------------------------ // Determine if search condition was met //------------------------------------------------------------ if (extension.GetType() == typeof(FeedRankSyndicationExtension)) { return true; } else { return false; } }
/// <summary> /// Predicate delegate that returns a value indicating if the supplied <see cref="ISyndicationExtension"/> /// represents the same <see cref="Type"/> as this <see cref="MyCustomSyndicationExtension"/>. /// </summary> /// <param name="extension">The <see cref="ISyndicationExtension"/> to be compared.</param> /// <returns><b>true</b> if the <paramref name="extension"/> is the same <see cref="Type"/> as this <see cref="MyCustomSyndicationExtension"/>; otherwise, <b>false</b>.</returns> /// <exception cref="ArgumentNullException">The <paramref name="extension"/> is a null reference (Nothing in Visual Basic).</exception> public static bool MatchByType(ISyndicationExtension extension) { Guard.ArgumentNotNull(extension, "extension"); //------------------------------------------------------------ // Determine if search condition was met //------------------------------------------------------------ if (extension.GetType() == typeof(MyCustomSyndicationExtension)) { return true; } else { return false; } }
/// <summary> /// Initializes a new instance of the <see cref="SyndicationExtensionLoadedEventArgs"/> class using the supplied <see cref="IXPathNavigable"/> and <see cref="ISyndicationExtension"/>. /// </summary> /// <param name="data">A <see cref="IXPathNavigable"/> object that represents the XML data that was used to load the syndication extension.</param> /// <param name="extension"> /// A <see cref="ISyndicationExtension"/> that represents the syndication extension after the load operation completed. /// </param> /// <exception cref="ArgumentNullException">The <paramref name="data"/> is a null reference (Nothing in Visual Basic).</exception> /// <exception cref="ArgumentNullException">The <paramref name="extension"/> is a null reference (Nothing in Visual Basic).</exception> public SyndicationExtensionLoadedEventArgs(IXPathNavigable data, ISyndicationExtension extension) : this(data) { Guard.ArgumentNotNull(extension, "extension"); eventExtension = extension; }