c# - 使用 DDay.iCal 反序列化 iCal,找不到属性

标签 c# deserialization dday

我正在尝试反序列化 iCal 文件,然后将集合映射到自定义 POCO。问题是我不确定属性存储在哪里。

这是反序列化方法

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 网站,但它已经关闭了一整天。

最佳答案

经过一番挖掘,发现 IICalendarCollection 有一个嵌套的 Event 集合,需要按如下方式解析。

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});
}

关于c# - 使用 DDay.iCal 反序列化 iCal,找不到属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9629016/

相关文章:

c# - XML反序列化: Same element name but different type

calendar - ics 闹钟未出现在 Google 日历或 Outlook 中

c# - 将 Google 日历解析为 DDay.iCal

c# - 如何将非托管对话框设置为 WinForm 窗体的所有者?

c# - 按文本而不是值对 Datagridview 的列进行排序

c# - Asp.net core 3.1 将 Url 中的斜杠 (/) 替换为问题 Marq (?)

c# - 如何用 DDay.iCal 生成 Organizer 字段?

c# - Nlog不写入Windows服务中的日志文件

c# - ServiceStack.Text 和 Twitter JSON

c - 如何使用 msgpack-c 正确解包和提取数据?