2016-08-12 14 views
5

Jestem bardzo nowym użytkownikiem EWS i Exchange w ogóle, więc nie jestem pewien, jakie jest najlepsze podejście.Ustawienie ExtendedProperties związane z pokojem

Tło

Próbuję ustawić informacje o konfiguracji pokoju. Miałem nadzieję, że interfejs API EWS dostarczył mi obiekt Room, na który mogę dodać ExtendedProperties, jednak wydaje się, że pokoje to tylko adres e-mail.

Potem zobaczyłem, że każdy pokój miał skojarzony z nim CalendarFolder, więc teraz próbuję ustawić konfigurację pokoju w CalendarFolder, co jest tym, o czym mówi oryginalne pytanie poniżej.

oryginalne pytanie

Próbuję zrobić prostą aktualizację do CalendarFolder używając:

var folderId = new FolderId(WellKnownFolderName.Calendar, new Mailbox(roomEmail.Address)); 
var myCalendar = CalendarFolder.Bind(service, folderId, PropertySet.FirstClassProperties); 

myCalendar.DisplayName += "Updated"; 
myCalendar.Update(); 

Jednakże gdy zgłoszę .Update() otrzymuję "Folder uratować operacja nie powiodła się ze względu na nieprawidłowe wartości właściwości: "

Uważam, że problem może mieć związek z myCalendar nie ma wszystkich właściwości, które folder kalendarza ma na serwerze. Kiedy aktualizuję obiekt, wysyłam tylko częściowy obiekt, który powoduje błędy sprawdzania poprawności.

W jaki sposób zaktualizować numer CalendarFolder?

Po dalszych badaniach

ja również natknęliśmy się na następujących, które działa:

FindFoldersResults root = service.FindFolders(WellKnownFolderName.Calendar, new FolderView(500)); 

foreach (var folder in root.Folders) 
{ 
    folder.DisplayName = "confRoom1"; 
    folder.Update(); 
} 

Jestem pewien, że istnieje różnica między tymi dwoma podejściami, ale ja nie rozumiem różnice między folderem, który otrzymuję za pomocą różnych metod zapytań:

new FolderId(WellKnownFolderName.Calendar, new Mailbox(roomEmail.Address)); 
var myCalendar = CalendarFolder.Bind(service, folderId, PropertySet.FirstClassProperties); 

i

Które podejście da mi prawidłowe CalendarFolder gdzie mogę ustawić ExtendedProperties do pokoju?

+0

Czy masz jakieś nowe spostrzeżenia? Czy jedna z proponowanych odpowiedzi działa? – lokusking

Odpowiedz

1

Jestem pewien, że istnieje różnica między tymi dwoma podejściami, ale nie rozumiem różnice między folderu że dostanę za pomocą różnych metod zapytań:

nowy FolderId (WellKnownFolderName. Kalendarz, nowa skrzynka pocztowa (roomEmail.Address)); var myCalendar = KalendarzFolder.Bind (usługa, folderId, PropertySet.FirstClassProperties); i

service.FindFolders (WellKnownFolderName.Kalendarz, nowy FolderView (500));

Pierwszy wiąże się z domyślnego folderu kalendarza w skrzynce pocztowej, a drugi się podfoldery w folderze Kalendarz Default. Możesz zmienić nazwy podfolderów w domyślnym folderze kalendarza, ponieważ są one tworzone przez użytkownika. Nie można zmienić nazwy domyślnego folderu kalendarza w skrzynce pocztowej, ponieważ jest to specjalny folder. Jeśli chcesz ustawić Rozszerzone właściwości (co można zrobić na specjalnym folderze to proste wystarczy zdefiniować go i ustawić go) np

ExtendedPropertyDefinition MyCustomProp = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.PublicStrings, "MyCustomProp", MapiPropertyType.String); 

CalendarFolder CalendarFolder = CalendarFolder.Bind(service,new FolderId(WellKnownFolderName.Calendar, "[email protected]")); 
CalendarFolder.SetExtendedProperty(MyCustomProp, "My Value"); 
CalendarFolder.Update(); 

Co chcesz dostać tę wartość należy zdefiniować propertySet który mówi wymianę aby zwrócić tę wartość, gdy powiążesz lub użyjesz FindItems (Exchange nie zwróci domyślnie twojej własności), np.

PropertySet MyPropSet = new PropertySet(BasePropertySet.FirstClassProperties); 
MyPropSet.Add(MyCustomProp); 
CalendarFolder = CalendarFolder.Bind(service, new FolderId(WellKnownFolderName.Calendar, "[email protected]"),MyPropSet); 
Object PropValue = null; 
if (CalendarFolder.TryGetProperty(MyCustomProp, out PropValue)) 
{ 
    Console.WriteLine(PropValue); 
} 
+0

Dodałem wyjaśnienie tego, co próbuję osiągnąć. –

Powiązane problemy