Deserialisieren Sie iCal mit DDay.iCal, die Eigenschaften können nicht gefunden werden

StackOverflow https://stackoverflow.com//questions/9629016

  •  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.

War es hilfreich?

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
scroll top