2015-09-29 2 views
0

Я пытаюсь добавить назначение в Outlook по коду. Существует атрибут «GetRecurrencePattern(). RecurrenceType» для объекта «Outlook.AppointmentItem». Когда я пытаюсь установить этот атрибут на «OlRecurrenceType.olRecursDaily», он автоматически преобразуется в «OlRecurrenceType.olRecursWeekly».Назначение типа повторного назначения Outlook из кода

Вот мой код:

 Outlook.AppointmentItem oMeet; 
Meeting Meet; 
Hashtable htrecc = GetReccuranceTable(strRec); 
    if (Meet.recctype.Substring(0, 3) == "day") 
    { 
    oMeet.GetRecurrencePattern().RecurrenceType = OlRecurrenceType.olRecursDaily; 
    OlRecurrenceType pattern2 = oMeet.GetRecurrencePattern().RecurrenceType; 
    string rectype = pattern2.ToString(); 
    oMeet.GetRecurrencePattern().Interval = Convert.ToInt32(htrecc["Interval"]); 
    if (string.Equals("no", htrecc["Occurence"])) 
     oMeet.GetRecurrencePattern().NoEndDate = true; 
    else 
      if (!string.IsNullOrEmpty(Convert.ToString(htrecc["Occurence"]))) 
       oMeet.GetRecurrencePattern().Occurrences = Convert.ToInt32(htrecc["Occurence"]); 
      else 
       oMeet.GetRecurrencePattern().PatternEndDate = Meet.EndTime; 
    } 

Строка "RecType" возвращает значение "olRecursWeekly" Пожалуйста, предложите, если я неправильно где-то.

+0

Вы пробовали сохранять вашу AppointmentItem после того, как вы установите его RecurrenceType? 'oMeet.Save()' перед тем, как попытаться извлечь RecurrenceType. – Insane

+0

Нет, oMeet.Save() вызывается после того, как все атрибуты были назначены. – Mainak

ответ

1

Каждый раз, когда вы вызываете GetRecurrencePattern(), вы возвращаете новый COM-объект RecurrentPattern. Не называйте GetRecurrencePattern() каждый раз, - назовем это один раз, кэшировать значение и использовать его везде в коде

Outlook.RecurrencePattern pattern = oMeet.GetRecurrencePattern(); 
pattern.RecurrenceType = OlRecurrenceType.olRecursDaily; 
    OlRecurrenceType pattern2 = pattern.RecurrenceType; 
    string rectype = pattern2.ToString(); 
    pattern.Interval = Convert.ToInt32(htrecc["Interval"]); 
    if (string.Equals("no", htrecc["Occurence"])) 
     pattern.NoEndDate = true; 
    else 
      if (!string.IsNullOrEmpty(Convert.ToString(htrecc["Occurence"]))) 
       pattern.Occurrences = Convert.ToInt32(htrecc["Occurence"]); 
      else 
       pattern.PatternEndDate = Meet.EndTime;