2011-08-18 18 views
5

Espero que alguien pueda ayudar. Al utilizar DDay.iCal versión 1.0.1.490 con .net versión 2 obtengo eventos de eventos duplicados después de llamar al método SerilizeToString.¿Cómo evito que los archivos de DDay.ical ics repitan los eventos de duplicación durante la llamada a la función SerializeToString?

Ejemplo de código:

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

Respuesta

10

La línea de Event evt = iCal.Create<Event>() crea un nuevo evento, lo añade a la recopilación de eventos del calendario, y lo devuelve. Más tarde, agrega manualmente el mismo evento a la colección de eventos del calendario: iCal.Events.Add(evt)

Estaba haciendo lo mismo, sin darme cuenta de que el método Create() agrega el evento al calendario. Utilice un constructor estándar para inicializar el evento, Event evt = new Event(), o elimine el manual Add() en la colección de eventos del calendario.

+0

Gracias - eso funcionó como un encanto, y tiene perfecto sentido en retrospectiva. – seekay

+0

¡Gracias! ¡Exactamente lo que necesitaba! – Sergey

Cuestiones relacionadas