我创建了一个 .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
属性进行标记?还是我误解了?