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);
}
}