0

.NET Framework SyndicationFeed を作成します。

SyndicationFeed feed = SyndicationFeed.Load(xmlReader);

次に、新しいアイテムを作成します。

var newItem = new SyndicationItem();
newItem.Id = sourceFeedItem.ItemID;
newItem.Title = new TextSyndicationContent(sourceFeedItem.ItemTitle);

次に、いくつかの iTunes アイテム拡張機能を追加します。

var iTunesExt = newItem.ElementExtensions;
iTunesExt.Add(new XElement("MyElement", "Whatever");
newItem.ElementExtensions.Add(iTunesExt);

次に、アイテムをitemsリストに追加します。

List<SyndicationItem> items = new List<SyndicationItem>();
items.Add(newItem);

フィードのItemsプロパティを設定します。

feed.Items = items;

そして最後に を に書き込みSyndicationFeed feedますXmlWriter

feed.SaveAsRss20(xmlWriter);

拡張機能追加されていない場合、つまりnewItem.ElementExtensions.Add(iTunesExt);行が実行されない場合はすべてうまくいきます。しかし、行が実行されると、の実行時に次のエラーが発生しますfeed.SaveAsRss20(xmlWriter);

型 'System.ServiceModel.Syndication.SyndicationElementExtension' をシリアル化できません。これを DataContractAttribute 属性でマークし、シリアル化するすべてのメンバーを DataMemberAttribute 属性でマークすることを検討してください。型がコレクションの場合は、CollectionDataContractAttribute でマークすることを検討してください。

属性でマークiTunesExtするにはどうすればよいですか? DataContractAttributeそれとも私はそれを誤解していますか?

4

1 に答える 1

0
iTunesExt.Add(new XElement("MyElement", "Whatever");

これを次のように変更してみてください。

iTunesExt.Add(new XElement("MyElement", "Whatever"), 
    new DataContractSerializer(typeof(XElement)));

これにより、 の使用を指定できますDataContractSerializer

于 2016-07-16T02:56:17.293 に答える