2016-08-01 24 views
0

尽管我已经在视图上设置了属性,但是当我以这种方式编写代码时,我无法检索ical的uid。获取交换日历项目的使用

static void GetCalendarItem(ExchangeService svc, string iCalUid) 
    { 
     var view = new ItemView(500); 
     var propSet = new PropertySet(BasePropertySet.IdOnly); 
     propSet.Add(ItemSchema.Subject); 
     propSet.Add(MeetingMessageSchema.ICalUid); 
     var items = svc.FindItems(WellKnownFolderName.Calendar, view); 
     foreach (var item in items) 
     { 
      var subject = item.Subject; 
      var guid = DefaultExtendedPropertySet.PublicStrings; 
      var epdUid = new ExtendedPropertyDefinition(guid, "UID", MapiPropertyType.Binary); 
      string uid = string.Empty; 
      var result = false; 
      if(item.TryGetProperty<string>(epdUid, out uid)) 
      { 
       result = true; 
      } 

      Console.WriteLine("Sub: {0}, Result: {1}", subject, result); 
     } 
    } 

我正在使用managed ews api 2.2。在这个例子中结果总是打印false

回答

0

你的代码有多个问题,你已经创建了一个属性集,但是你没有在ItemView上设置它。您的ExtendedProperty不正确,除非您拥有您自己的扩展属性并且您没有将其加载到任何EWS操作中,因此我永远不会显示任何值。你的代码看起来应该像

static void GetCalendarItem(ExchangeService svc, string iCalUid) 
{ 
    var view = new ItemView(500); 
    var propSet = new PropertySet(BasePropertySet.IdOnly); 
    propSet.Add(ItemSchema.Subject); 
    propSet.Add(MeetingMessageSchema.ICalUid); 
    view.PropertySet = propSet; 
    var items = svc.FindItems(WellKnownFolderName.Calendar, view); 
    foreach (var item in items) 
    { 
     var subject = item.Subject; 
     var result = item.ICalUid; 


     Console.WriteLine("Sub: {0}, Result: {1}", subject, result); 
    } 
} 
+0

'item'没有一个属性'ICalUid' – deostroll

+0

检查ITEMTYPE并酌情将其转换为约会 –