System.Windows.Automation.SourceManager.GetAutomationSource C# (CSharp) Method

GetAutomationSource() private static method

private static GetAutomationSource ( string sourceAssemblyName ) : IAutomationSource
sourceAssemblyName string
return IAutomationSource
		private static IAutomationSource GetAutomationSource (string sourceAssemblyName)
		{
			Assembly sourceAssembly = null;
			try {
				sourceAssembly = Assembly.Load (sourceAssemblyName);
			} catch (Exception e){
				Log.Warn (string.Format ("Error loading UIA source ({0}): {1}",
				                                  sourceAssemblyName,
				                                  e));
				return null;
			}

			Type sourceType = null;

			// Quickie inefficent implementation
			Type sourceInterfaceType = typeof (IAutomationSource);
			foreach (Type type in sourceAssembly.GetTypes ()) {
				if (sourceInterfaceType.IsAssignableFrom (type)) {
					sourceType = type;
					break;
				}
			}
			if (sourceType == null) {
				Log.Error ("No UIA source found in assembly: " +
				                   sourceAssemblyName);
				return null;
			}

			try {
				IAutomationSource source
					= (IAutomationSource) Activator.CreateInstance (sourceType);
				if (!source.IsAccessibilityEnabled)
					return null;

				source.Initialize ();
				return source;
			} catch (Exception e) {
				Log.Error ("Failed to load UIA source: " + e);
				return null;
			}
		}
	}