private void AddPlugin(string fileName) { Assembly pluginAssembly = Assembly.LoadFrom(fileName); foreach (Type pluginType in pluginAssembly.GetTypes()) { if (!pluginType.IsPublic || pluginType.IsAbstract) { continue; } if (!pluginType.IsSubclassOf(typeof(PluginBase))) { continue; } AvailablePlugin newPlugin = new AvailablePlugin { AssemblyPath = fileName, Type = pluginAssembly.GetType(pluginType.ToString()) }; if (Options.PluginsToLoad?.Contains(pluginType.ToString()) == true) { Options.Logger.Information("FindPlugins - AddPlugin of type: {type} from file: {fileName}", pluginType.ToString(), newPlugin.AssemblyPath); newPlugin.CreateInstance(); newPlugin.Instance.Host = this; newPlugin.Instance.Initialize(); } AvailablePlugins.Add(newPlugin); } }
private void AddPlugin(string fileName) { Assembly pluginAssembly = Assembly.LoadFrom(fileName); foreach (Type pluginType in pluginAssembly.GetTypes()) { if (!pluginType.IsPublic || pluginType.IsAbstract) { continue; } if (!pluginType.IsSubclassOf(typeof(PluginBase))) { continue; } AvailablePlugin newPlugin = new AvailablePlugin { AssemblyPath = fileName, Type = pluginAssembly.GetType(pluginType.ToString()) }; if (Options.PluginsToLoad.Contains(pluginType.ToString())) { newPlugin.CreateInstance(); newPlugin.Instance.Host = this; newPlugin.Instance.Initialize(); } AvailablePlugins.Add(newPlugin); //newPlugin = null; // TODO: to be removed? } //pluginAssembly = null; // TODO: to be removed? }