Utökningsbarhet för syndikering
Syndikerings-API:et är utformat för att tillhandahålla en formatneutral programmeringsmodell som gör att syndikerat innehåll kan skrivas till tråden i olika format. Den abstrakta datamodellen består av följande klasser:
Dessa klasser mappar nära de konstruktioner som definieras i Atom 1.0-specifikationen, även om vissa av namnen är olika.
En viktig funktion i syndikeringsprotokoll är utökningsbarhet. Både Atom 1.0 och RSS 2.0 lägger du till attribut och element i syndikeringsfeeds som inte definieras i specifikationerna. Programmeringsmodellen för Windows Communication Foundation (WCF) ger följande sätt att arbeta med anpassade attribut och tillägg, löst typinskriven åtkomst och härleda en ny klass.
Löst inskriven åtkomst
Att lägga till tillägg genom att härleda en ny klass kräver att du skriver ytterligare kod. Ett annat alternativ är att komma åt tillägg på ett löst skrivet sätt. Alla typer som definierats i den abstrakta datamodellen för syndikering innehåller egenskaper med namnet AttributeExtensions
och ElementExtensions
(med ett undantag SyndicationContent har en AttributeExtensions
egenskap men ingen ElementExtensions
egenskap). Dessa egenskaper är samlingar av tillägg som inte bearbetas av TryParseAttribute
metoderna och TryParseElement
. Du kan komma åt dessa obearbetade tillägg genom att anropa SyndicationElementExtensionCollection.ReadElementExtensionsElementExtensions
egenskapen SyndicationFeed, , SyndicationItemSyndicationLink, SyndicationPersonoch SyndicationCategory. Den här uppsättningen metoder hittar alla tillägg med det angivna namnet och namnområdet, deserialiserar dem individuellt i instanser av TExtension
och returnerar dem som en samling TExtension
objekt.
Härleda en ny klass
Du kan härleda en ny klass från någon av de befintliga abstrakta datamodellklasserna. Gör detta när du implementerar ett program där de flesta feeds som du arbetar med har ett visst tillägg. I det här avsnittet innehåller de flesta feeds som programmet fungerar med ett MyExtension
tillägg. Gör följande för att ge en bättre programmeringsupplevelse:
Skapa en klass för att lagra tilläggsdata. I det här fallet skapar du en klass med namnet MyExtension.
Härled en klass med namnet MyExtensionItem från SyndicationItem för att exponera en egenskap av typen MyExtension i programmeringssyfte.
Åsidosätt TryParseElement(XmlReader, String) i klassen MyExtensionItem för att instansiera en ny MyExtension-instans när en MyExtension läss in.
Åsidosätt WriteElementExtensions(XmlWriter, String) i klassen MyExtensionItem för att skriva innehållet i egenskapen MyExtension till en XML-skrivare.
Härled en klass med namnet MyExtensionFeed från SyndicationFeed.
Åsidosätt CreateItem() i klassen MyExtensionFeed för att instansiera en MyExtensionItem i stället för standardvärdet SyndicationItem. En serie metoder definieras i SyndicationFeed och SyndicationItem som kan skapa SyndicationLink, SyndicationCategoryoch SyndicationPerson objekt (till exempel CreateLink(), CreateCategory()och CreatePerson()). Allt detta kan åsidosättas för att skapa en anpassad härledd klass.