Как предотвратить повторение файлов DDay.ical ics событий дублирования во время вызова функции SerializeToString - PullRequest
5 голосов
/ 18 августа 2011

Надеюсь, кто-нибудь может помочь. Используя DDay.iCal версии 1.0.1.490 с .net версии 2, я получаю двойные события после вызова метода SerilizeToString.

Пример кода:

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

1 Ответ

10 голосов
/ 22 августа 2011

Строка Event evt = iCal.Create<Event>() создает новое событие, добавляет его в коллекцию событий календаря и возвращает его. Позже вы вручную добавляете это же событие в коллекцию событий календаря: iCal.Events.Add(evt)

Я делал то же самое, не понимая, что метод Create() добавляет событие в календарь. Либо используйте стандартный конструктор для инициализации события Event evt = new Event(), либо удалите руководство Add() в коллекцию событий календаря.

...