Windows Phone 7 - iCal Generator - C#

Let*_*Ask 5 c# icalendar windows-phone-7

我需要从从设备获取的约会生成iCal字符串.Windows Phone 7是否支持从约会生成iCal的库?

我尝试过DDay.iCal,但它不适用于Windows Phone 7.

Hen*_*y C 3

我没有遇到过专门针对 Windows Phone 7 的库,但编写自己的类来生成 iCal 文件应该不会太困难,因为毕竟 iCal 只是文本。RFC 的阅读量相当大,但使用一些像这样的在线参考资料并查看一些示例 iCal 文件应该足以开始。以 wikipedia 中的 iCal 文件为例:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT
UID:uid1@example.com
DTSTAMP:19970714T170000Z
ORGANIZER;CN=John Doe:MAILTO:john.doe@example.com
DTSTART:19970714T170000Z
DTEND:19970715T035959Z
SUMMARY:Bastille Day Party
END:VEVENT
END:VCALENDAR
Run Code Online (Sandbox Code Playgroud)

因此请注意,您开始和结束 VCALENDAR 以及其中的 VEVENT,其中包含一些必填字段(如 UID)。唯一需要注意的是,规范要求将长度超过 75 个八位字节的行进行分解,因此您可以使用此堆栈溢出问题中的此方法来处理具有长文本的字段:

Private Function RFC2445TextField(ByVal LongText As String) As String

     LongText = LongText.Replace("\", "\\")
     LongText = LongText.Replace(";", "\;")
     LongText = LongText.Replace(",", "\,")


     Dim sBuilder As New StringBuilder
     Dim charArray() As Char = LongText.ToCharArray

     For i = 1 To charArray.Length
         sBuilder.Append(charArray(i - 1))
         If i Mod 74 = 0 Then sBuilder.Append(vbCrLf & " ")
     Next

     Return sBuilder.ToString

 End Function
Run Code Online (Sandbox Code Playgroud)

该函数基本上转义所有必需的转义字符,并每 74 个字符插入一个换行符/空格。

祝你好运,玩得开心!:)