day.ical.ical을 사용하여 iCal을 deserialize, 속성을 찾을 수 없습니다
-
09-12-2019 - |
문제
iCal 파일을 원하지 않게하고 컬렉션을 사용자 정의 POCO로 매핑하려고합니다.문제는 속성이 저장되는 위치가 확실하지 않다는 것입니다.
여기에 deserialization 방법
.
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;
}
}
그런 다음 내 서비스에서 POCO에 속성을 매핑하려고하지만 속성을 찾을 수 없습니다.
.
var url = string.Format(GoogleICalUrl, calendarID);
var feed = iCalUtility.Deserialize(url);
foreach(var e in feed)
{
calendarModel.title = e.WhereTheHellAreThePropertiesKept;
}
누구든지 iCalendarCollection
를 통해 루프를 반복하고 모든 속성을 가져올 수있는 올바른 방법을 알고 있습니까?
나는 DDay 웹 사이트를 확인했지만 하루 종일 내려졌습니다.
해결책
After some digging, it turns out that IICalendarCollection has a nested Event collection that needs to be parsed as follows.
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});
}