2011-08-18 13 views
5

.netバージョン2でDDay.iCalバージョン1.0.1.490を使用すると、SerilizeToStringメソッドを呼び出した後に重複イベントイベントが発生します。SerializeToString関数呼び出し中にDDay.ical icsファイルが重複イベントを繰り返さないようにするにはどうすればよいですか。

コード例:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using DDay.iCal; 
using DDay.iCal.Serialization.iCalendar; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      iCalendar iCal = new iCalendar(); 
      Event evt = iCal.Create<Event>(); 
      Uri eventLink = new Uri("http://middlebury.edu";); 
      evt.IsAllDay = false; 

      evt.Start = new iCalDateTime(DateTime.Parse("2011-08-11")); 
      evt.Duration = new TimeSpan(2, 0, 0); 
      evt.Location = "Test"; 
      evt.Summary = "Breakfast"; 
      evt.Url = eventLink; 
      evt.Description = "Sausage Links" + "\n" + "Pancakes" + "\n"; 

      iCal.Events.Add(evt); 

      iCalendarSerializer serializer = new iCalendarSerializer(iCal); 

      string result = serializer.SerializeToString(iCal); 
     } 
    } 
} 

答えて

10

ラインEvent evt = iCal.Create<Event>()は、新しいイベントを作成したカレンダーのイベントコレクションに追加し、それを返します。その後、同じイベントをカレンダーのイベントコレクションに手作業で追加します。Create()メソッドがカレンダーに予定を追加しているのを気付かずに、私は同じことをやっていました。標準コンストラクターを使用してイベントを初期化するか、Event evt = new Event()、またはマニュアルAdd()をカレンダーのイベントコレクションに削除します。

+0

ありがとうございます - それは魅力的なように機能し、後天的には理にかなっています。 – seekay

+0

ありがとうございます!正確に私が必要なもの! – Sergey