2012-08-06 9 views
8

他の人が以前にこの問題について議論しているように(例:Exchange web services: why is ItemId not constant?)、私は解決策について話したいと思います。私は人々がGuidを拡張プロパティとしてスタンプすることによって何を提案したのですか?いいえ(私はそれが発生と動作するようにはわかりません)が、アプリケーションが動作する限り、アプリケーションがアイテムの拡張プロパティを再起動すると消えて、今私の問題は、 "どのようにスタンプするEWSアイテムの拡張プロパティを作成し、それを絶えず作成しますか?」 これは、予定表アイテム(予定)Exchange Webサービス:Item Idが一定でないのはなぜですか? [続き]

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

を更新するコードであり、これらは、上記の必要なプロパティを定義しています。誰もが前にこれを行っている場合

_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); 

それで、彼/彼女は、アプリケーションが終了しても、アイテムにスタンプ拡張プロパティを保持例を私に提供することができます。 ありがとう

+0

こんにちは、「アプリケーションがアイテムの拡張プロパティを再起動すると、どういう意味ですか?」というのはどういう意味ですか? –

+0

私は以下の答えで私自身の質問に答えました:) – BraveHeart

+1

私は知っています。 :)しかし、私も拡張プロパティを使用し、それが可能な場合、私はそれに格納されている値は、いくつかの時点で失われている興味がありますか? –

答えて

9

私はいつか試して検索した後に私の問題を解決する方法を見つけました。

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

ねえ!これも私のために働いた。ありがとう! –

+0

これをVBに移植して使用します。 String.IsNullOrEmpty(GUID)次に SetGuidForAppointment(任命) GUID = GetGuidForAppointment(任命) END IF場合は薄暗いがString = GetGuidForAppointment(任命) としてのguid:として使用 – Brent

関連する問題