// Methods 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); } }
public static void RegisterClientSideProviderAssembly(AssemblyName assemblyName) { ArgumentCheck.NotNull(assemblyName, "assemblyName"); Assembly assembly = null; // TODO, wrap exception messages into Catalog.GetString try { assembly = Assembly.Load(assemblyName); } catch (FileNotFoundException) { throw new ProxyAssemblyNotLoadedException( string.Format("'{0}' assembly not found.", assemblyName)); } string typeName = assemblyName.Name + ".UIAutomationClientSideProviders"; Type type = assembly.GetType(typeName); if (type == null) { throw new ProxyAssemblyNotLoadedException( string.Format("Cannot find type {0} in assembly {1}", typeName, assemblyName)); } FieldInfo field = type.GetField("ClientSideProviderDescriptionTable", BindingFlags.Public | BindingFlags.Static); if ((field == null) || (field.FieldType != typeof(ClientSideProviderDescription[]))) { throw new ProxyAssemblyNotLoadedException( string.Format("Cannot find Register method on type {0} in assembly {1}", typeName, assemblyName)); } var description = field.GetValue(null) as ClientSideProviderDescription []; if (description != null) { ClientSettings.RegisterClientSideProviders(description); } }