private void AddPlugin(string FileName) { Assembly pluginAssembly = Assembly.LoadFrom(FileName); foreach (Type pluginType in pluginAssembly.GetTypes()) { if (pluginType.IsPublic) { if (!pluginType.IsAbstract) { Type[] typeInterfaces = pluginType.GetInterfaces(); foreach (Type typeInterface in typeInterfaces) { if (typeInterface.ToString() == "DataInterface.IDataProvider") { DataTypes.AvailablePlugin newPlugin = new DataTypes.AvailablePlugin(); newPlugin.AssemblyPath = FileName; newPlugin.Instance = (IDataProvider)Activator.CreateInstance(pluginAssembly.GetType(pluginType.ToString())); this.colAvailablePlugins.Add(newPlugin); newPlugin = null; } } } } } pluginAssembly = null; }
public DataTypes.AvailablePlugin Find(string pluginNameOrPath) { DataTypes.AvailablePlugin toReturn = null; foreach (DataTypes.AvailablePlugin pluginOn in this) { if ((pluginOn.Instance.Name.Equals(pluginNameOrPath)) || pluginOn.AssemblyPath.Equals(pluginNameOrPath)) { toReturn = pluginOn; break; } } return(toReturn); }