Deserialisieren Sie iCal mit DDay.iCal, die Eigenschaften können nicht gefunden werden
-
09-12-2019 - |
Frage
Ich versuche, eine iCal-Datei zu deserialisieren und die Sammlung dann einem benutzerdefinierten POCO zuzuordnen.Das Problem ist, dass ich nicht sicher bin, wo die Eigenschaften gespeichert sind.
Hier ist die Deserialisierungsmethode
public static IICalendarCollection Deserialize(String iCalUri)
{
var wc = new WebClient();
var result = wc.DownloadString(iCalUri);
using (var memoryStream = new MemoryStream(Encoding.UTF8.GetBytes(result)))
{
var serializer = new iCalendarSerializer();
var collection = (iCalendarCollection)serializer.Deserialize(memoryStream, Encoding.UTF8);
return collection;
}
}
Dann versuche ich in meinem Dienst, die Eigenschaften meinem POCO zuzuordnen, kann die Eigenschaften jedoch nicht finden.
var url = string.Format(GoogleICalUrl, calendarID);
var feed = iCalUtility.Deserialize(url);
foreach(var e in feed)
{
calendarModel.title = e.WhereTheHellAreThePropertiesKept;
}
Weiß jemand, wie man das richtig durchschleift? iCalendarCollection
und alle Eigenschaften erhalten?
Ich habe die DDay-Website überprüft, aber sie war den ganzen Tag nicht erreichbar.
Lösung
Nach einigem Suchen stellt sich heraus, dass IICalendarCollection über eine verschachtelte Event-Sammlung verfügt, die wie folgt analysiert werden muss.
var url = string.Format(GoogleICalUrl, calendarID);
var feed = iCalUtility.Deserialize(url);
foreach (var ev in feed.SelectMany(e => e.Events))
{
calendarModel.Add(new CalendarModel {description = ev.Description,
title = ev.Summary});
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow