2016-08-12 13 views
5

से संबंधित विस्तारित प्रॉपर्टीज सेट करना मैं सामान्य रूप से ईडब्ल्यूएस और एक्सचेंज के लिए बहुत नया हूं, इसलिए वास्तव में यह सुनिश्चित नहीं है कि सबसे अच्छा तरीका क्या है।कक्ष

पृष्ठभूमि

मैं एक कमरे के बारे में कॉन्फ़िगरेशन जानकारी निर्धारित करने की कोशिश कर रहा हूँ। मैं उम्मीद कर रहा था कि ईडब्ल्यूएस एपीआई ने मुझे Room ऑब्जेक्ट प्रदान किया है, जिसमें मैं ExtendedProperties जोड़ सकता हूं, हालांकि, ऐसा लगता है कि कमरे केवल एक ईमेल पता हैं।

मैंने देखा कि प्रत्येक कमरे में CalendarFolder इसके साथ जुड़ा हुआ था, इसलिए अब मैं CalendarFolder में कक्ष कॉन्फ़िगरेशन सेट करने का प्रयास कर रहा हूं, जो नीचे मूल प्रश्न है।

मूल प्रश्न

मैं का उपयोग कर एक CalendarFolder का एक सरल अद्यतन करने के लिए कोशिश कर रहा हूँ:

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

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

हालांकि, जब मैं .Update() फोन मैं "फ़ोल्डर अमान्य के कारण विफल आपरेशन बचाने के संपत्ति मूल्य "

मुझे विश्वास है कि समस्याके साथ कुछ करने के लिए हो सकती हैमें सभी गुण नहीं हैं जो कैलेंडर फ़ोल्डर सर्वर पर हैं। इसलिए जब मैं ऑब्जेक्ट को अपडेट करता हूं तो यह केवल आंशिक ऑब्जेक्ट भेज रहा है जो सत्यापन त्रुटियों का कारण बन रहा है।

मैं CalendarFolder को अपडेट करने के बारे में कैसे जाउंगा?

आगे अनुसंधान

मैं भी निम्नलिखित भर में ठोकर खाई है, जो करता है के बाद काम:

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

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

मुझे यकीन है कि वहाँ दो दृष्टिकोण बीच एक अंतर है, लेकिन मैं समझ में नहीं आता अलग-अलग क्वेरी विधियों का उपयोग करने वाले फ़ोल्डर के बीच अंतर:

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

और

किस तरीके से मुझे देना होगा सही CalendarFolder जहाँ मैं कमरे के लिए ExtendedProperties सेट कर सकते हैं?

+0

आप किसी भी नई अंतर्दृष्टि है? प्रस्तावित उत्तर में से एक काम किया था? – lokusking

उत्तर

1

मुझे यकीन है कि वहाँ दो दृष्टिकोण बीच एक अंतर है, लेकिन मैं फ़ोल्डर के बीच मतभेद है कि मैं अलग क्वेरी तरीकों का उपयोग कर पाने के समझ में नहीं आता:

नई FolderId (WellKnownFolderName। कैलेंडर, नया मेलबॉक्स (roomEmail.Address)); var myCalendar = CalendarFolder.Bind (सेवा, फ़ोल्डर आईडी, PropertySet.FirstClassProperties); और

सेवा। FIFFolders (WellKnownFolderName।कैलेंडर, नया फ़ोल्डर दृश्य (500));

पहले एक मेलबॉक्स में डिफ़ॉल्ट कैलेंडर फ़ोल्डर को बांधता है और दूसरा डिफ़ॉल्ट कैलेंडर फ़ोल्डर के भीतर सबफ़ोल्डर्स मिलता है। आप सबफ़ोल्डर को डिफ़ॉल्ट कैलेंडर फ़ोल्डर में बदल सकते हैं क्योंकि वे उपयोगकर्ता बनाए गए हैं। आप मेलबॉक्स में डिफ़ॉल्ट कैलेंडर फ़ोल्डर का नाम बदल नहीं सकते क्योंकि यह एक विशेष फ़ोल्डर है। आप एक विस्तारित गुण सेट करना चाहते हैं (जो आप एक विशेष फ़ोल्डर पर कर सकते हैं तो यह आसान बस इसे परिभाषित करने और यह सेट) जैसे

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

आपको लगता है कि मूल्य प्राप्त करने के आप एक propertySet कि विनिमय बताता को परिभाषित करना होगा चाहते हैं क्या कि मान देने के लिए जब आप या तो बाइंड या उपयोग FindItems (एक्सचेंज डिफ़ॉल्ट रूप से अपनी संपत्ति नहीं लौटेगा) जैसे

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

मैंने जो कुछ हासिल करने की कोशिश कर रहा हूं उसका स्पष्टीकरण जोड़ा है। –

संबंधित मुद्दे