2012-08-06 14 views
8

bazılarının bu sorunu daha önce tartıştığından (örneğin, Exchange web services: why is ItemId not constant?), çözüm hakkında konuşmak istiyorum, Guid'i genişletilmiş bir özellik olarak damgalayarak insanların önerdiklerini yaptım, Bu çözüm benim için güzel (uygulama ile ilgili olarak nasıl çalışacağımı bilmiyorum) ancak uygulama çalıştığı sürece, uygulama öğelerin genişletilmiş özelliklerini yeniden başlattıktan sonra, şimdi benim sorunum “Nasıl damgalanır EWS maddesinde genişletilmiş mülk ve sürekli orada mı?” Bu takvim öğeleri (randevular)Exchange web hizmetleri: ItemId neden sabit değil? [devamı]

public void SetGuidForAppointement(Appointment appointment) 
{   
appointment.SetExtendedProperty((ExtendedPropertyDefinition)_appointementIdPropertyDefinition, Guid.NewGuid().ToString()); 
appointment.Update(ConflictResolutionMode.AlwaysOverwrite, SendInvitationsOrCancellationsMode.SendToNone); 
} 

Ve bunlar yukarıda gerekli özellikler tanımıdır güncelleme kodudur. Herkes önce bu yaptıysa

_appointementIdPropertyDefinition = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.Appointment, "AppointmentID", MapiPropertyType.String); 
      _propertyDefinitionBases = new PropertyDefinitionBase[] { _appointementIdPropertyDefinition, ItemSchema.ParentFolderId, AppointmentSchema.Start, AppointmentSchema.End, 
AppointmentSchema.LegacyFreeBusyStatus, AppointmentSchema.Organizer }; 
      PropertySet = new PropertySet(BasePropertySet.FirstClassProperties, _propertyDefinitionBases); 

Yani o/o uygulama çıkış yapmış olsa bile öğe üzerinde damgalı genişletilmiş özellik tutan bir örnekle beni sağlayabilir. Teşekkürler

+0

Merhaba, tam olarak ne demek, "uygulamanın kaldırılan özelliklerinin yeniden başlatılmasından sonra" ile ne demek istiyorsunuz? –

+0

Ben kendi cevabını aşağıdaki cevapta cevaplandırdım :) – BraveHeart

+1

biliyorum. :) Ama ben de genişletilmiş özellikler kullanıyorum ve eğer mümkün ise merak ediyorum, içinde sakladığım değer bir noktada kaybolur mu? –

cevap

9

Bir süre denedikten ve arandığından sonra sorunumun çözümünü buldum.

private static readonly PropertyDefinitionBase AppointementIdPropertyDefinition = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.PublicStrings, "AppointmentID", MapiPropertyType.String); 
public static PropertySet PropertySet = new PropertySet(BasePropertySet.FirstClassProperties, AppointementIdPropertyDefinition); 


//Setting the property for the appointment 
public static void SetGuidForAppointement(Appointment appointment) 
{ 
    try 
    { 
     appointment.SetExtendedProperty((ExtendedPropertyDefinition)AppointementIdPropertyDefinition, Guid.NewGuid().ToString()); 
     appointment.Update(ConflictResolutionMode.AlwaysOverwrite, SendInvitationsOrCancellationsMode.SendToNone); 
    } 
    catch (Exception ex) 
    { 
     // logging the exception 
    } 
} 

//Getting the property for the appointment 
public static string GetGuidForAppointement(Appointment appointment) 
{ 
    var result = ""; 
    try 
    { 
     appointment.Load(PropertySet); 
     foreach (var extendedProperty in appointment.ExtendedProperties) 
     { 
      if (extendedProperty.PropertyDefinition.Name == "AppointmentID") 
      { 
       result = extendedProperty.Value.ToString(); 
      } 
     } 
    } 
    catch (Exception ex) 
    { 
    // logging the exception 
    } 
    return result; 
} 
+0

Hey! Bu benim için de çalıştı. Teşekkürler ! –

+0

Burada kullanmak için VB'ye aktarıldı. olarak kullanılır: String = GetGuidForAppointment (randevu) gibi guid Dim Eğer string.IsNullOrEmpty (guid) Sonra SetGuidForAppointment (randevu) guid = GetGuidForAppointment (randevu) sonu ise – Brent

İlgili konular