Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Die Syndication-API wurde entwickelt, um ein formatneutrales Programmiermodell bereitzustellen, mit dem syndizierte Inhalte in einer Vielzahl von Formaten in das Draht geschrieben werden können. Das abstrakte Datenmodell besteht aus den folgenden Klassen:
Diese Klassen sind eng mit den in der Atom 1.0-Spezifikation definierten Konstrukten verbunden, obwohl einige der Namen unterschiedlich sind.
Ein wichtiges Feature von Veröffentlichungsprotokollen ist die Erweiterbarkeit. Sowohl Atom 1.0 als auch RSS 2.0 fügen Attribute und Elemente zu Veröffentlichungsfeeds hinzu, die in den Spezifikationen nicht definiert sind. Das Windows Communication Foundation (WCF)-Veröffentlichungsprogrammiermodell bietet die folgenden Möglichkeiten zum Arbeiten mit benutzerdefinierten Attributen und Erweiterungen, lose typiertem Zugriff und Ableiten einer neuen Klasse.
Zugriff mit flexibler Typbindung
Zum Hinzufügen von Erweiterungen durch Ableiten einer neuen Klasse müssen zusätzlichen Code geschrieben werden. Eine andere Möglichkeit besteht darin, mit flexibler Typbindung auf Erweiterungen zuzugreifen. Alle Typen, die im syndikation abstrakten Datenmodell definiert sind, enthalten Eigenschaften namens AttributeExtensions und ElementExtensions (mit einer Ausnahme, SyndicationContent besitzt eine AttributeExtensions Eigenschaft, aber keine ElementExtensions Eigenschaft). Diese Eigenschaften sind Sammlungen von Erweiterungen, die nicht von den TryParseAttribute- und TryParseElement-Methoden verarbeitet werden. Sie können auf diese unverarbeiteten Erweiterungen zugreifen, indem Sie SyndicationElementExtensionCollection.ReadElementExtensions für die ElementExtensions-Eigenschaft von SyndicationFeed, SyndicationItem, SyndicationLink, SyndicationPerson und SyndicationCategory aufrufen. Diese Gruppe von Methoden findet alle Erweiterungen mit dem angegebenen Namen und Namespace, deserialisiert sie einzeln in Instanzen von TExtension und gibt sie als Auflistung von TExtension Objekten zurück.
Ableiten einer neuen Klasse
Sie können eine neue Klasse von einer der vorhandenen abstrakten Datenmodellklassen ableiten. Gehen Sie dazu vor, wenn Sie eine Anwendung implementieren, in der die meisten Feeds, mit denen Sie arbeiten, eine bestimmte Erweiterung aufweisen. In diesem Thema enthalten die meisten der Feeds, mit denen das Programm arbeitet, eine MyExtension-Erweiterung. Führen Sie die folgenden Schritte aus, um eine verbesserte Programmierumgebung bereitzustellen:
Erstellen Sie eine Klasse, um die Erweiterungsdaten zu enthalten. Erstellen Sie in diesem Fall eine Klasse namens MyExtension.
Leiten Sie eine Klasse namens "MyExtensionItem" aus SyndicationItem ab, um eine Eigenschaft vom Typ "MyExtension" für Programmierzwecke verfügbar zu machen.
Überschreiben Sie TryParseElement(XmlReader, String) in der MyExtensionItem-Klasse, um eine neue MyExtension-Instanz zu instanziieren, wenn MyExtension eingelesen wird.
Überschreiben Sie WriteElementExtensions(XmlWriter, String) in der MyExtensionItem-Klasse, um den Inhalt der MyExtension-Eigenschaft an einen XML-Writer auszugeben.
Leiten Sie eine Klasse namens MyExtensionFeed von SyndicationFeed ab.
Überschreiben Sie CreateItem() in der MyExtensionFeed-Klasse, um ein MyExtensionItem anstelle des Standardwerts SyndicationItem zu instanziieren. Eine Reihe von Methoden wird in SyndicationFeed und SyndicationItem definiert, die SyndicationLink, SyndicationCategory und SyndicationPerson Objekte erstellen können, z. B. CreateLink(), CreateCategory() und CreatePerson(). All dies kann überschrieben werden, um eine benutzerdefinierte abgeleitete Klasse zu erstellen.