System.Windows.Automation.ClientSettings.RegisterClientSideProviderAssembly C# (CSharp) Method

RegisterClientSideProviderAssembly() public static method

public static RegisterClientSideProviderAssembly ( AssemblyName assemblyName ) : void
assemblyName System.Reflection.AssemblyName
return void
        public static void RegisterClientSideProviderAssembly(AssemblyName assemblyName)
        {
            Utility.ValidateArgumentNonNull(assemblyName, "assemblyName");

            // Load the assembly
            Assembly assembly = null;
            try
            {
                assembly = Assembly.Load(assemblyName);
            }
            catch (System.IO.FileNotFoundException)
            {
                throw new ProxyAssemblyNotLoadedException(String.Format("Assembly {0} not found", assemblyName));
            }

            // Find the official type
            string name = assemblyName.Name + ".UIAutomationClientSideProviders";
            Type type = assembly.GetType(name);
            if (type == null)
            {
                throw new ProxyAssemblyNotLoadedException(String.Format("Could not find type {0} in assembly {1}", name, assemblyName));
            }

            // Find the descriptor table
            FieldInfo field = type.GetField("ClientSideProviderDescriptionTable", BindingFlags.Public | BindingFlags.Static);
            if ((field == null) || (field.FieldType != typeof(ClientSideProviderDescription[])))
            {
                throw new ProxyAssemblyNotLoadedException(String.Format("Could not find register method on type {0} in assembly {1}", name, assemblyName));
            }

            // Get the table value
            ClientSideProviderDescription[] clientSideProviderDescription = field.GetValue(null) as ClientSideProviderDescription[];

            // Write it through
            if (clientSideProviderDescription != null)
            {
                ClientSettings.RegisterClientSideProviders(clientSideProviderDescription);
            }
        }