Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A API de sindicalização foi projetada para fornecer um modelo de programação neutro em formato que permite que o conteúdo sindicalizado seja gravado na transmissão em uma variedade de formatos. O modelo de dados abstrato consiste nas seguintes classes:
Essas classes se aproximam dos construtos definidos na especificação Atom 1.0, embora alguns dos nomes sejam diferentes.
Um dos principais recursos dos protocolos de sindicalização é a extensibilidade. Atom 1.0 e RSS 2.0 adicionam atributos e elementos a feeds de sindicalização que não estão definidos nas especificações. O modelo de programação de sindicalização do Windows Communication Foundation (WCF) fornece as seguintes maneiras de trabalhar com atributos e extensões personalizados, acesso com tipo flexível e derivar uma nova classe.
Acesso com tipo flexível
Adicionar extensões derivando uma nova classe requer a gravação de código adicional. Outra opção é acessar extensões usando tipo flexível. Todos os tipos definidos no modelo de dados abstrato de sindicalização contêm propriedades nomeadas AttributeExtensions e ElementExtensions (com uma exceção, SyndicationContent tem uma propriedade AttributeExtensions mas nenhuma propriedade ElementExtensions). Essas propriedades são coleções de extensões não processadas pelos métodos TryParseAttribute e TryParseElement, respectivamente. Você pode acessar essas extensões não processadas chamando SyndicationElementExtensionCollection.ReadElementExtensions na propriedade ElementExtensions de SyndicationFeed, SyndicationItem, SyndicationLink, SyndicationPerson e SyndicationCategory. Esse conjunto de métodos encontra todas as extensões com o nome e namespace especificados, desserializa cada uma individualmente em instâncias de TExtension e as retorna como uma coleção de objetos TExtension.
Derivando uma nova classe
Você pode derivar uma nova classe de qualquer uma das classes de modelo de dados abstratas existentes. Faça isso ao implementar um aplicativo no qual a maioria dos feeds com os quais você está trabalhando tenha uma extensão específica. Neste tópico, a maioria dos feeds com os quais o programa funciona 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 de extensão. Nesse caso, crie uma classe chamada MyExtension.
Derive uma classe chamada MyExtensionItem a partir 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 uma MyExtension é lida.
Sobrescreva WriteElementExtensions(XmlWriter, String) na classe MyExtensionItem para que você possa escrever o conteúdo da propriedade MyExtension em um escritor XML.
Derivar uma classe chamada MyExtensionFeed de SyndicationFeed.
Substitua CreateItem() na classe MyExtensionFeed para instanciar um MyExtensionItem em vez do SyndicationItem padrão. 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.