示例#1
0
        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));
        }
示例#2
0
        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));
        }
示例#3
0
        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);
        }