示例#1
0
        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;
        }
示例#2
0
        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);
        }