0

我希望将隐藏数据保存到 Outlook 365 事件。这就是我目前正在做的事情。

SingleValueLegacyExtendedProperty singleEP1 = new SingleValueLegacyExtendedProperty
{
    Id = "String " + "{" + Guid.NewGuid() + "} " + "Name " + "PlanningID",
    Value = appointment.PlanningId.ToString() == null ? "0" : appointment.PlanningId.ToString()
};

SingleValueLegacyExtendedProperty singleEP2 = new SingleValueLegacyExtendedProperty
{
    Id = "String " + "{" + Guid.NewGuid() + "} " + "Name " + "CustomerName",
    Value = appointment.CustomerName.ToString() == null ? "" : appointment.CustomerName.ToString()
};

SingleValueLegacyExtendedProperty singleEP3 = new SingleValueLegacyExtendedProperty
{
    Id = "String " + "{" + Guid.NewGuid() + "} " + "Name " + "ProjectName",
    Value = appointment.ProjectName.ToString() == null ? "" : appointment.ProjectName.ToString()
};

SingleValueLegacyExtendedProperty singleEP4 = new SingleValueLegacyExtendedProperty
{
    Id = "String " + "{" + Guid.NewGuid() + "} " + "Name " + "PresentationName",
    Value = appointment.PrestationName.ToString() == null ? "" : appointment.PrestationName.ToString()
};

当我使用呼叫获取所有日历项目时:

ICalendarCalendarViewCollectionPage retrievedEvents = await graphClient
                                                        .Me
                                                        .Calendars["Calendar"]
                                                        .CalendarView
                                                        .Request(options)
                                                        .GetAsync();

然后我在单值扩展属性上得到一个 NULL。

4

1 回答 1

1

你不想这样做

 Id = "String " + "{" + Guid.NewGuid() + "} " + "Name " + "PlanningID",

使用 Guid.NewGuid() 只会在 Exchange 中生成一个随机扩展属性,如果你做得足够多,将导致扩展属性耗尽。您在此处使用的 GUID 很重要,因为您需要在要检索该属性时指定它。因此,选择一个 GUID 并在您要为应用程序设置的每个属性中使用它,例如

ID =“字符串”+“{66f5a359-4659-4830-9070-00049ec6ac6e}”+“名称”+“PlanningID”,

然后我在单值扩展属性上得到一个 NULL。任何帮助将不胜感激。

要检索上述扩展属性,您需要在请求中指定它(注意为什么使用特定的 GUID 很重要),例如

  ICalendarCalendarViewCollectionPage retrievedEvents = await graphserviceClient
                 .Me
                 .Calendars["Calendar"]
                 .CalendarView
                 .Request(options)
                 .Expand("SingleValueExtendedProperties($filter=Id eq 'String {66f5a359-4659-4830-9070-00049ec6ac6e} Name PlanningID')")
                 .GetAsync();

但是,除非您尝试使用 MAPI 或 EWS 与旧版应用程序交互,否则对于这种类型的自定义数据,更好的主意是开放扩展https://developer.microsoft.com/en-us/graph/docs/api-reference/v1。 0/resources/opentypeextension当您有多个要使用的属性时,它可以避免很多丑陋。

于 2017-09-28T06:24:34.690 回答