【发布时间】:2016-07-16 10:56:17
【问题描述】:
我创建了一个 .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.
如何使用DataContractAttribute 属性标记iTunesExt?还是我理解错了?
【问题讨论】:
标签: c# .net rss xml-serialization syndicationfeed