Я создаю .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
? Или я это неправильно понимаю?