示例#1
0
        public static void Set(IItem item, PropertyDefinition propertyDefinition, Reminders <T> newReminders)
        {
            Util.ThrowOnNullArgument(item, "item");
            Util.ThrowOnNullArgument(propertyDefinition, "propertyDefinition");
            Util.ThrowOnMismatchType <byte[]>(propertyDefinition, "propertyDefinition");
            ExTraceGlobals.RemindersTracer.TraceDebug <StoreObjectId, PropertyDefinition>(0L, "Reminders.Set - item={0}, propertyDefinition={1}", item.StoreObjectId, propertyDefinition);
            if (newReminders == null)
            {
                ExTraceGlobals.RemindersTracer.TraceDebug <PropertyDefinition>(0L, "Reminders.Set - Reminder list is null, deleting property={0}", propertyDefinition);
                item.Delete(propertyDefinition);
                return;
            }
            Reminders <T> .UpdateReminderIdentifiers(newReminders);

            ExTraceGlobals.RemindersTracer.TraceDebug <int>(0L, "Reminders.Set - Serializing reminders, count={0}", newReminders.ReminderList.Count);
            using (Stream stream = item.OpenPropertyStream(propertyDefinition, PropertyOpenMode.Create))
            {
                if (newReminders.ReminderList.Count > 0)
                {
                    IReminder reminder = newReminders.ReminderList[0];
                    newReminders.Version = reminder.GetCurrentVersion();
                }
                using (XmlWriter xmlWriter = XmlWriter.Create(stream))
                {
                    DataContractSerializer dataContractSerializer = new DataContractSerializer(typeof(Reminders <T>));
                    dataContractSerializer.WriteObject(xmlWriter, newReminders);
                }
            }
        }