Пример #1
0
 internal void CopyChangeToItemObject(Item item, ExchangeVersion ewsVersion)
 {
     if (base.ObjectState == ObjectState.Unchanged)
     {
         return;
     }
     if (item.IsNew && !string.IsNullOrEmpty(this.ItemClass))
     {
         EwsStoreObjectSchema.ItemClass.SetItemProperty(item, this.ItemClass);
     }
     foreach (PropertyDefinition propertyDefinition in this.ObjectSchema.AllProperties)
     {
         EwsStoreObjectPropertyDefinition ewsStoreObjectPropertyDefinition = propertyDefinition as EwsStoreObjectPropertyDefinition;
         if (ewsStoreObjectPropertyDefinition != null && !ewsStoreObjectPropertyDefinition.IsReadOnly && !ewsStoreObjectPropertyDefinition.IsCalculated && (base.ObjectState == ObjectState.New || base.IsChanged(ewsStoreObjectPropertyDefinition)))
         {
             if (ewsStoreObjectPropertyDefinition.StorePropertyDefinition.Version > ewsVersion && !ewsStoreObjectPropertyDefinition.IsMandatory)
             {
                 ExTraceGlobals.StorageTracer.TraceDebug(0L, "Skip saving property '{0}.{1}' because the current EWS version '{2}' is lower than '{3}'.", new object[]
                 {
                     base.GetType().FullName,
                     ewsStoreObjectPropertyDefinition.Name,
                     ewsVersion,
                     ewsStoreObjectPropertyDefinition.StorePropertyDefinition.Version
                 });
             }
             else
             {
                 object obj = this[ewsStoreObjectPropertyDefinition];
                 if (obj == ewsStoreObjectPropertyDefinition.DefaultValue && !ewsStoreObjectPropertyDefinition.PersistDefaultValue)
                 {
                     if (base.ObjectState == ObjectState.New)
                     {
                         continue;
                     }
                     obj = null;
                 }
                 if (obj != null)
                 {
                     obj = EwsStoreValueConverter.ConvertValueToStore(ewsStoreObjectPropertyDefinition, obj);
                 }
                 ewsStoreObjectPropertyDefinition.SetItemProperty(item, obj);
             }
         }
     }
 }