/// <summary>
        /// Ein Event mit dem angegebenen Titel und dem Termin wird für den Einlader angelegt.
        /// Der Titel muss innerhalb der Veranstaltungen eindeutig sein und das Datum darf nicht
        /// in der Vergangenheit liegen.
        /// Mit dem optionalen Parameter maxParticipators kann eine Obergrenze für die Teilnehmer festgelegt
        /// werden.
        /// </summary>
        /// <param name="invitor"></param>
        /// <param name="title"></param>
        /// <param name="dateTime"></param>
        /// <param name="maxParticipators"></param>
        /// <returns>Wurde die Veranstaltung angelegt</returns>
        public bool CreateEvent(Person invitor, string title, DateTime dateTime, int maxParticipators = 0)
        {
            bool eventCreated = false;

            try
            {
                if (DoesTitleAlreadyExist(title))
                {
                    throw new ArgumentException("The 'title' parameter has to be unique!");
                }

                Event newEvent;

                if (maxParticipators > 0)
                {
                    newEvent = new EventLimited(title, dateTime, invitor, maxParticipators);
                }
                else
                {
                    newEvent = new Event(title, dateTime, invitor);
                }

                _events.Add(newEvent);
                eventCreated = true;
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(eventCreated);
        }
        /// <summary>
        /// Person registriert sich für Veranstaltung.
        /// Eine Person kann sich zu einer Veranstaltung nur einmal registrieren.
        /// </summary>
        /// <param name="person"></param>
        /// <param name="ev">Veranstaltung</param>
        /// <returns>War die Registrierung erfolgreich?</returns>
        public bool RegisterPersonForEvent(Person person, Event ev)
        {
            bool registerOk = true;

            if (ev != null && person != null)
            {
                foreach (Event myEvent in _events)
                {
                    foreach (Person myPerson in myEvent.Persons)
                    {
                        if (myPerson.Equals(person) && ev.DateTimeEvent == myEvent.DateTimeEvent)
                        {
                            registerOk = false;
                        }
                    }
                }

                if (registerOk && !ev.Persons.Contains <Person>(person))
                {
                    if (ev.GetType().Equals(typeof(EventLimited)))
                    {
                        EventLimited tmp = ev as EventLimited;
                        if (tmp.Persons.Count < tmp.MaxParticipators)
                        {
                            person.Events.Add(ev);
                            ev.Persons.Add(person);
                        }
                        else
                        {
                            registerOk = false;
                        }
                    }
                    else
                    {
                        person.Events.Add(ev);
                        ev.Persons.Add(person);
                    }
                }
                else
                {
                    registerOk = false;
                }
            }
            else
            {
                registerOk = false;
            }

            return(registerOk);
        }