While.PluginLoader.LoadPluginTypes C# (CSharp) Method

LoadPluginTypes() private method

private LoadPluginTypes ( List pluginNames, string assemblyName ) : void
pluginNames List
assemblyName string
return void
        private void LoadPluginTypes(List<string> pluginNames, string assemblyName)
        {
            try {
                Assembly pluginAssembly = Assembly.LoadFile(assemblyName);
                foreach (Type t in pluginAssembly.GetTypes()) {
                    if (typeof(ICompilerPlugin).IsAssignableFrom(t)) {
                        ConstructorInfo constructor = t.GetConstructor(new Type[] { });
                        if (constructor == null) {
                            Console.Error.WriteLine("Cannot load plugin type '{0}' because it doesn't have a parameterless constructor", t.Name);
                            continue;
                        }
                        ICompilerPlugin plugin = (ICompilerPlugin)Activator.CreateInstance(t);
                        if (pluginNames.Contains(plugin.Identifier)) {
                            Console.WriteLine("Loaded plugin '{0}'", plugin.Name);
                            _loadedPlugins.Add(plugin);
                        }
                    }
                }
            } catch (Exception ex) {
                Console.Error.WriteLine("Failed to load assembly '{0}', {1}", assemblyName, ex.Message);
            }
        }