/// <summary> /// Gets the provider. /// </summary> /// <param name="principal">The principal.</param> /// <param name="syncProviderType">Type of the sync provider.</param> /// <returns></returns> public static GenericRemoteSyncProvider <EntityObjectHierarchy> GetProvider(int principalId, eSyncProviderType syncProviderType) { GenericRemoteSyncProvider <EntityObjectHierarchy> retVal; string key = GetUniqueProviderKey(principalId, syncProviderType); lock (_lockObject) { if (!_activeSyncPorviders.TryGetValue(key, out retVal)) { switch (syncProviderType) { case eSyncProviderType.Appointment: retVal = CalendarEventSyncProvider.CreateInstance(principalId); break; } if (retVal != null) { _activeSyncPorviders.Add(key, retVal); } } } return(retVal); }