[英]Create appointment with custom properties in EWS
我嘗試將自定義屬性添加到創建的約會中,如下所示:
var newEvent = new Appointment(service)
{
Start = start,
End = end,
Subject = subject,
ReminderMinutesBeforeStart = 15
};
var extendendProperty = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.Address, "organizer",
MapiPropertyType.String);
newEvent.SetExtendedProperty(extendendProperty, organizer);
但是問題是,當我嘗試從服務器獲取此約會時,屬性ExtendedProperty為空。
另外,我創建新約會並添加“房間”作為必需的與會者,當我嘗試獲取此約會時,我不是從日歷中獲取而是從房間日歷中獲取。
因此,我想在我的約會中添加擴展屬性並邀請“房間”。 接下來獲取房間的所有約會,在這里我想閱讀此屬性。 甚至有可能嗎?
我閱讀了以下主題: EWS創建約會以交換其他自定義屬性 ,據我了解,當我想讀取此屬性時,我必須有權訪問ExtendendPropertyDefinition
,並且必須在此之前知道此約會的ID。 現在,我通過此代碼從Outlook下載所有約會:
var folderId = new FolderId(WellKnownFolderName.Calendar, new Mailbox(userName));
var calendar = CalendarFolder.Bind(service, folderId, new PropertySet());
return calendar.FindAppointments(new CalendarView(start, stop)).ToList();
編輯
感謝格倫尺度! 它幾乎可以按我想要的方式工作,但有一件事。 如果我下載自己的約會,則可以閱讀此附加屬性,但是在該代碼中,我從會議室日歷下載約會。
正如我猜想的那樣,當創建新約會並為需要的服務員添加房間時,它會創建自己的約會,並且不會復制此其他屬性。
那么,當我將該屬性添加到我的房間時,有什么辦法可以從房間預約中獲得此附加屬性?
您需要首先創建一個屬性集,然后將要加載的擴展屬性添加到該屬性集。 然后告訴EWS您希望在執行FindAppointment方法時返回該屬性,請參見https://msdn.microsoft.com/zh-cn/library/office/dd633697(v=exchg.80).aspx,例如您的示例
PropertySet YourProperyset = new PropertySet(BasePropertySet.FirstClassProperties);
var extendendProperty = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.Address, "organizer",MapiPropertyType.String);
YourProperyset.Add(extendendProperty);
var folderId = new FolderId(WellKnownFolderName.Calendar, new Mailbox(userName));
var calendar = CalendarFolder.Bind(service, folderId);
var calendarView = new CalendarView(start, stop);
calendarView.PropertySet = YourProperyset;
return calendar.FindAppointments(calendarView).ToList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.