Following on the heels of Steve Maine's post about namespaces in Syndication objects (Feeds, items, etc.), I thought it wise to plug the new stuff in PictureServices.

At the moment, PictureServices implements SLE (Simple List Extensions), and does a pretty crude job of it at that. Time permitting, I will add more support for field and group customization. For now, it serves as an example more than a carrier grade implementation. In any event, I used extension methods in the following type definition to make it easy to insert the right namespace declarations in the feed:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel.Syndication;
using System.Xml;

namespace Microsoft.DPE.Samples.SyndicationExtensions
{
    // adds custom namespaces to an item or a feed
    public static class SyndicationNamespaceHelper
    {
        public static void DeclareNamespace(this SyndicationFeed feed, 
String prefix,
String ns) { XmlQualifiedName key = new XmlQualifiedName(prefix, NamespaceUris.XMLNamespace); feed.AttributeExtensions.Add(key, ns); } public static void DeclareNamespace(this SyndicationItem item,
String prefix,
String ns) { XmlQualifiedName key = new XmlQualifiedName(prefix, NamespaceUris.XMLNamespace); item.AttributeExtensions.Add(key, ns); } } }

The usage model is simple - just new up a feed or an item, then call DeclareNamespace. Piece of cake.