2015-01-28 3 views
0

добавить расширенное свойство таким образом:Получение расширенного свойства из Exchange/Outlook назначения

ExtendedPropertyDefinition ep = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.CalendarAssistant, "AppointmentID", MapiPropertyType.Integer); 
Appointment newApp = new Appointment(service); 
newapp.SetExtendedProperty(ep, appID); 
newApp.Save(SendInvitationsMode.SendToNone); 

Все хорошо. Назначение отображается в Outlook, как ожидалось.

Позже я пытался искать через все назначения Outlook, с AppointmentID присвоенным:

List<SearchFilter> filters = new List<SearchFilter>(); 
filters.Add(new SearchFilter.Exists(ep)); 
filters.Add(new SearchFilter.IsLessThan(AppointmentSchema.Start, DateTime.Now.AddDays(60))); 
filters.Add(new SearchFilter.IsGreaterThanOrEqualTo(AppointmentSchema.Start, DateTime.Today)); 
FindItemsResults<Item> allOutlookAppt = service.FindItems(WellKnownFolderName.Calendar, new SearchFilter.SearchFilterCollection(LogicalOperator.And, filters.ToArray()), viewFind); 

allOutlookAppt возвращает ожидаемый набор (записей календаря с AppointmentID набора). Однако я не смог получить AppointmentID по этому коду:

foreach (var a in allOutlookAppt) // contains correct calendar entries! 
{ 
    object oid; 
    if (a.TryGetProperty(ep, out oid)) 
    { 
    // a.TryGetProperty is always false, oid is always null thus never enter here! 
    } 
} 

Что я сделал не так?

Edit: Я попытался a.ExtendedProperties.Count и это на самом деле возвращает 0.

ответ

1

После прибегая к помощи немного, я должен добавить это перед поиском календаря

viewFind.PropertySet = new PropertySet(ep);