Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
A API de Syndication foi concebida para fornecer um modelo de programação neutro em termos de formato que permite que o conteúdo sindicalizado seja distribuído na rede em uma variedade de formatos. O modelo de dados abstrato consiste nas seguintes classes:
Essas classes correspondem de forma próxima às construções definidas na especificação Atom 1.0, embora alguns dos nomes sejam diferentes.
Uma característica fundamental dos protocolos de distribuição é a extensibilidade. Tanto o Atom 1.0 quanto o RSS 2.0 adicionam atributos e elementos aos feeds de distribuição que não estão definidos nas especificações. O modelo de programação de distribuição do Windows Communication Foundation (WCF) fornece as seguintes maneiras de trabalhar com atributos e extensões personalizados, acesso de tipo flexível e derivação de uma nova classe.
Acesso vagamente tipado
Adicionar extensões derivando uma nova classe requer escrever código adicional. Outra opção é acessar extensões de forma vaga. Todos os tipos definidos no modelo de dados abstrato de sindicação contêm propriedades nomeadas AttributeExtensions e ElementExtensions (com uma exceção, SyndicationContent tem uma propriedade AttributeExtensions, mas não tem uma propriedade ElementExtensions). Essas propriedades são coleções de extensões que não são processadas pelos métodos TryParseAttribute e TryParseElement respectivamente. Você pode acessar essas extensões não processadas chamando SyndicationElementExtensionCollection.ReadElementExtensions na ElementExtensions propriedade de SyndicationFeed, SyndicationItem, SyndicationLink, SyndicationPerson, e SyndicationCategory. Esse conjunto de métodos localiza todas as extensões com o nome e o namespace especificados, desserializa-as individualmente em instâncias de TExtension e as retorna como uma coleção de TExtension objetos.
Derivando uma nova classe
Você pode derivar uma nova classe de qualquer uma das classes de modelo de dados abstratos existentes. Faça isso ao implementar um aplicativo no qual a maioria dos feeds com os quais você está trabalhando tem uma extensão específica. Neste tópico, a maioria dos feeds com os quais o programa trabalha contém uma MyExtension extensão. Para fornecer uma experiência de programação aprimorada, execute as seguintes etapas:
Crie uma classe para armazenar os dados da extensão. Nesse caso, crie uma classe chamada MyExtension.
Derive uma classe chamada MyExtensionItem de SyndicationItem para expor uma propriedade do tipo MyExtension para fins de programação.
Substitua TryParseElement(XmlReader, String) na classe MyExtensionItem para instanciar uma nova instância MyExtension quando um MyExtension é lido.
Sobreponha WriteElementExtensions(XmlWriter, String) na classe MyExtensionItem para que possa gravar o conteúdo da propriedade MyExtension em um escritor XML.
Derive uma classe chamada MyExtensionFeed de SyndicationFeed.
Substitua CreateItem() na classe MyExtensionFeed para criar uma instância de MyExtensionItem em vez de usar o padrão SyndicationItem. Uma série de métodos são definidos em SyndicationFeed e SyndicationItem que podem criar SyndicationLink, SyndicationCategory, e SyndicationPerson objetos (por exemplo, CreateLink(), CreateCategory(), e CreatePerson()). Tudo isso pode ser substituído para criar uma classe derivada personalizada.