Example #1
0
        public static object Create(string fullName, object parameter)
        {
            IPlugInParameter plugin = PlugInManager.Create(fullName) as IPlugInParameter;

            if (plugin != null)
            {
                plugin.Parameter = parameter;
            }

            return(plugin);
        }
Example #2
0
        public static object Create(object PlugIn, object parameter)
        {
            IPlugInParameter plugin = PlugInManager.Create(PlugIn) as IPlugInParameter;

            if (plugin != null)
            {
                plugin.Parameter = parameter;
            }

            return(plugin);
        }
Example #3
0
        public static object Create(XmlNode node, object parameter)
        {
            IPlugInParameter plugin = PlugInManager.Create(node) as IPlugInParameter;

            if (plugin != null)
            {
                plugin.Parameter = parameter;
            }

            return(plugin);
        }
Example #4
0
        public PlugInTypeList GetPlugins(Type interfaceType)
        {
            PlugInTypeList typeList = new PlugInTypeList();
            List <string>  guids    = new List <string>();

            foreach (XmlNode plugInNode in _doc.SelectNodes("components/plugin[@guid and @type]"))
            {
                #region Load only once ... on plugin instance can implement more than one (plugin)interface
                string guid = plugInNode.Attributes["guid"].Value;
                if (guids.Contains(guid))
                {
                    continue;
                }
                guids.Add(guid);
                #endregion

                object plugin = null;
                try
                {
                    plugin = PlugInManager.Create(plugInNode);
                }
                catch
                {
                    continue;
                }
                if (plugin == null || typeList.ContainsType(plugin.GetType()))
                {
                    continue;
                }

                foreach (Type iType in plugin.GetType().GetInterfaces())
                {
                    if (iType.Equals(interfaceType))
                    {
                        typeList.Add(new PlugInType(plugin));
                        break;
                    }
                }
            }

            return(typeList);
        }
Example #5
0
        public static List <T> Sort(IEnumerable <XmlNode> pluginNodes)
        {
            List <T> ret = new List <T>();

            foreach (XmlNode node in pluginNodes)
            {
                try
                {
                    T t = (T)PlugInManager.Create(node);
                    if (t == null)
                    {
                        continue;
                    }
                    ret.Add(t);
                }
                catch { }
            }
            ret.Sort(new Sorter());
            return(ret);
        }
Example #6
0
 public object CreateInstance()
 {
     return(PlugInManager.Create(PluginGuid));
 }
Example #7
0
 public object CreateInstance(object plugin)
 {
     return(PlugInManager.Create(plugin));
 }
Example #8
0
 public object CreateInstance(Guid guid)
 {
     return(PlugInManager.Create(guid));
 }
Example #9
0
 public object CreateInstance(XmlNode node)
 {
     return(PlugInManager.Create(node));
 }