/// <summary> /// Returns <paramref name="propertyDefinition"/> property value from Exchange storage <paramref name="item"/>. /// If property value not reachable, returns default <paramref name="propertyDefinition"/> value. /// </summary> /// <typeparam name="T">Return value type.</typeparam> /// <param name="item"><see cref="Exchange.Item"/> instance.</param> /// <param name="propertyDefinition"><see cref="Exchange.PropertyDefinition"/> instance.</param> /// <returns><paramref name="propertyDefinition"/> value from <paramref name="item"/> if value reachable, /// dafault <paramref name="propertyDefinition"/> value otherwise.</returns> public static T SafeGetValue <T>(this Exchange.Item item, Exchange.PropertyDefinition propertyDefinition) { T value; item.TryGetProperty(propertyDefinition, out value); return(value); }
/// <summary> /// Returns activity instance. /// </summary> /// <param name="context">Synchronization context.</param> /// <param name="exchangeItem">Sync element in external storage.</param> /// <param name="localItem">Sync element in local storage.</param> protected Entity GetActivity(SyncContext context, Exchange.Item exchangeItem, ref LocalItem localItem) { Entity instance; Object localId; if (exchangeItem.TryGetProperty(ExchangeUtilityImpl.LocalIdProperty, out localId)) { context.LogInfo(SyncAction.None, SyncDirection.DownloadAndUpload, "GetActivity use localId action {0} for {1}", Action, GetDisplayName()); instance = GetSyncedActivityWithChangedRemoteId(context, exchangeItem, Guid.Parse(localId.ToString()), localItem); } else { context.LogInfo(SyncAction.None, SyncDirection.DownloadAndUpload, "GetActivity not use localId action {0} for {1}", Action, GetDisplayName()); instance = GetEntityInstance <Entity>(context, localItem, "Activity"); } return(instance); }