Partilhar via


Extensibilidade de Sindicação

A API de distribuição foi projetada para fornecer um modelo de programação neutro em termos de formato que permite que o conteúdo sindicalizado seja gravado no fio em uma variedade de formatos. O modelo de dados abstrato consiste nas seguintes classes:

Essas classes são mapeadas de perto para as 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 abstratos de sindicação contêm propriedades nomeadas AttributeExtensions e ElementExtensions (com uma exceção, tem uma AttributeExtensions propriedade, SyndicationContent mas nenhuma ElementExtensions propriedade). Essas propriedades são coleções de extensões não processadas TryParseAttribute pelos métodos e TryParseElement respectivamente. Você pode acessar essas extensões não processadas chamando SyndicationElementExtensionCollection.ReadElementExtensions a ElementExtensions propriedade de SyndicationFeed, SyndicationItem, SyndicationLink, SyndicationPersone 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:

Consulte também