internal static ABProviderCapabilities GetProviderCapabilities(IABSessionSettings addressBookSessionSettings) { if (addressBookSessionSettings == null) { throw new ArgumentNullException("addressBookSessionSettings"); } string providerName = ABFactory.GetProviderName(addressBookSessionSettings); ExTraceGlobals.FrameworkTracer.TraceDebug <string>(0L, "Getting provider capabilities for provider '{0}'.", providerName); IABProviderFactory providerFactory = ABFactory.GetProviderFactory(providerName); return(providerFactory.GetProviderCapabilities(addressBookSessionSettings)); }
internal static ABSession CreateABSession(IABSessionSettings addressBookSessionSettings) { if (addressBookSessionSettings == null) { throw new ArgumentNullException("addressBookSessionSettings"); } string providerName = ABFactory.GetProviderName(addressBookSessionSettings); ExTraceGlobals.FrameworkTracer.TraceDebug <string>(0L, "Creating session for provider '{0}'.", providerName); ABFactory.ThrowIfDisabled(addressBookSessionSettings); IABProviderFactory providerFactory = ABFactory.GetProviderFactory(providerName); return(providerFactory.Create(addressBookSessionSettings)); }
private static IABProviderFactory LoadProviderFactory(string providerName, string assemblyPath) { Assembly assembly; try { assembly = Assembly.LoadFrom(assemblyPath); } catch (FileNotFoundException ex) { ExTraceGlobals.FrameworkTracer.TraceError(0L, "Failed to load ABProvider: FileNotFound exception."); Globals.LogEvent(DirectoryEventLogConstants.Tuple_UnableToLoadABProvider, assemblyPath, new object[] { providerName, assemblyPath, ex }); throw new ABProviderLoadException(DirectoryStrings.ProviderFileNotFoundLoadException(providerName, assemblyPath), ex); } catch (FileLoadException ex2) { ExTraceGlobals.FrameworkTracer.TraceError(0L, "Failed to load ABProvider: FileLoadException exception."); Globals.LogEvent(DirectoryEventLogConstants.Tuple_UnableToLoadABProvider, assemblyPath, new object[] { providerName, assemblyPath, ex2 }); throw new ABProviderLoadException(DirectoryStrings.ProviderFileLoadException(providerName, assemblyPath), ex2); } catch (BadImageFormatException ex3) { ExTraceGlobals.FrameworkTracer.TraceError(0L, "Failed to load ABProvider: BadImageFormatException exception."); Globals.LogEvent(DirectoryEventLogConstants.Tuple_UnableToLoadABProvider, assemblyPath, new object[] { providerName, assemblyPath, ex3 }); throw new ABProviderLoadException(DirectoryStrings.ProviderBadImpageFormatLoadException(providerName, assemblyPath), ex3); } string abfactoryClassNameFromProviderName = ABFactory.GetABFactoryClassNameFromProviderName(providerName); IABProviderFactory iabproviderFactory = (IABProviderFactory)assembly.CreateInstance(abfactoryClassNameFromProviderName, true); if (iabproviderFactory == null) { string text = string.Format(CultureInfo.InvariantCulture, "Failed to load ABProvider: Factory class '{0}' not found.", new object[] { abfactoryClassNameFromProviderName }); ExTraceGlobals.FrameworkTracer.TraceError(0L, text); Globals.LogEvent(DirectoryEventLogConstants.Tuple_UnableToLoadABProvider, assemblyPath, new object[] { providerName, assemblyPath, text }); throw new ABProviderLoadException(DirectoryStrings.ProviderFactoryClassNotFoundLoadException(providerName, assemblyPath, abfactoryClassNameFromProviderName)); } return(iabproviderFactory); }