gpt4 book ai didi

c# - Exchange Web 服务 : why is ItemId not constant? [续]

转载 作者:太空狗 更新时间:2023-10-29 17:48:26 25 4
gpt4 key购买 nike

因为之前有人讨论过这个问题(例如 Exchange web services: why is ItemId not constant? ),我想谈谈解决方案,我已经按照人们的建议通过将 Guid 标记为扩展属性来完成,对我来说这个解决方案有点像很好(虽然我不知道如何让它与事件一起工作)但只要应用程序工作,一旦应用程序重新启动,项目的扩展属性就会消失,所以我现在的问题是“如何在 EWS 项目上标记扩展属性并使其常驻?”这是更新日历项(约会)的代码

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

因此,如果有人以前这样做过,他/她是否可以向我提供一个示例,即使应用程序退出,该示例也会将扩展属性标记在项目上。谢谢

最佳答案

经过一段时间的尝试和搜索,我找到了解决问题的办法。

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;
}

关于c# - Exchange Web 服务 : why is ItemId not constant? [续],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11827152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com