2011-08-18 12 views
5

Spero che qualcuno possa aiutare. Usando la versione 1.0.1.490 di DDay.iCal con .net versione 2 ottengo eventi di eventi duplicati dopo aver chiamato il metodo SerilizeToString.Come impedire ai file DDay.ical di ripetere gli eventi di duplicazione durante la chiamata di funzione SerializeToString

Esempio di codice:

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

risposta

10

La linea Event evt = iCal.Create<Event>() crea un nuovo evento, lo aggiunge alla raccolta di eventi del calendario, e lo restituisce. Successivamente, aggiungi manualmente lo stesso evento alla raccolta eventi del calendario: iCal.Events.Add(evt)

Stavo facendo la stessa cosa, senza rendermi conto che il metodo Create() aggiunge l'evento al calendario. Utilizzare un costruttore standard per inizializzare l'evento, Event evt = new Event() o rimuovere il manuale Add() nella raccolta eventi del calendario.

+0

Grazie - ha funzionato come un incantesimo e ha perfettamente senso a posteriori. – seekay

+0

Grazie! Esattamente quello di cui avevo bisogno! – Sergey