private static void SyncronizedCall <TProvider>(string providerName, SyncronizedCallDelegate <TProvider> func) where TProvider : class, IDataProvider { SyncronizedCall <TProvider, object>(providerName, provider => { func(provider); return(null); }); }
private static TResult SyncronizedCall <TProvider, TResult>(string providerName, SyncronizedCallDelegate <TProvider, TResult> func) where TProvider : class, IDataProvider where TResult : class { IDataProvider provider = GetDataProvider(providerName); Verify.That(provider is TProvider, "The data provider {0} does not implement the interface {1}", providerName, typeof(TProvider).FullName); // DDZ: hardcoded for now, to be fixed bool syncDisabled = provider is SqlDataProvider; IDisposable scope = null; try { if (!syncDisabled) { scope = _resourceLocker.Locker; } return((TResult)func(provider as TProvider)); } finally { if (scope != null) { scope.Dispose(); } } }