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