예제 #1
0
 public pluginType Type(string pInput)
 {
     if (pInput.Length > 0)
     {
         IPlugin.IPlugin plugin = GetPlugin(pInput);
         return(plugin.Type);
     }
     else
     {
         return(pluginType.none);
     }
 }
예제 #2
0
 private IPlugin.IPlugin GetPlugin(string pluginName)
 {
     foreach (var dir in Plugins)
     {
         IPlugin.IPlugin plugin = dir.Value as IPlugin.IPlugin;
         if (plugin.Name.ToLower().Equals(pluginName.ToLower()))
         {
             return(plugin);
         }
     }
     return(null);
 }
예제 #3
0
 public pluginHook Hook(string pInput)
 {
     if (pInput.Length > 0)
     {
         IPlugin.IPlugin plugin = GetPlugin(pInput);
         return(plugin.Hook);
     }
     else
     {
         return(pluginHook.none);
     }
 }
예제 #4
0
 public string Version(string pInput)
 {
     if (pInput.Length > 0)
     {
         IPlugin.IPlugin plugin = GetPlugin(pInput);
         return(plugin.Version);
     }
     else
     {
         return("");
     }
 }
예제 #5
0
 public string Author(string pInput)
 {
     if (pInput.Length > 0)
     {
         IPlugin.IPlugin plugin = GetPlugin(pInput);
         return(plugin.Author);
     }
     else
     {
         return("");
     }
 }
예제 #6
0
 public string Name(string pInput)
 {
     if (pInput.Length > 0)
     {
         IPlugin.IPlugin plugin = GetPlugin(pInput);
         return(plugin.Name);
     }
     else
     {
         return("");
     }
 }
예제 #7
0
 public Image Icon(string pInput)
 {
     if (pInput.Length > 0)
     {
         IPlugin.IPlugin plugin = GetPlugin(pInput);
         return(plugin.Icon());
     }
     else
     {
         return(null);
     }
 }
예제 #8
0
        public static ICollection <IPlugin.IPlugin> LoadPlugins(string path)
        {
            string[] dllFileNames = null;
            if (Directory.Exists(path))
            {
                dllFileNames = Directory.GetFiles(path, "*.dll");
                ICollection <Assembly> assemblies = new List <Assembly>(dllFileNames.Length);
                foreach (string dllFile in dllFileNames)
                {
                    AssemblyName an       = AssemblyName.GetAssemblyName(dllFile);
                    Assembly     assembly = Assembly.Load(an);
                    assemblies.Add(assembly);
                }

                Type pluginType = typeof(IPlugin.IPlugin);
                ICollection <Type> pluginTypes = new List <Type>();
                foreach (Assembly assembly in assemblies)
                {
                    if (assembly != null)
                    {
                        Type[] types = assembly.GetTypes();
                        foreach (Type type in types)
                        {
                            if (type.IsInterface || type.IsAbstract)
                            {
                                continue;
                            }
                            else
                            if (type.GetInterface(pluginType.FullName) != null)
                            {
                                pluginTypes.Add(type);
                            }
                        }
                    }
                }

                ICollection <IPlugin.IPlugin> plugins = new List <IPlugin.IPlugin>(pluginTypes.Count);
                foreach (Type type in pluginTypes)
                {
                    IPlugin.IPlugin plugin = (IPlugin.IPlugin)Activator.CreateInstance(type);
                    plugins.Add(plugin);
                }
                return(plugins);
            }
            return(null);
        }
예제 #9
0
 public DataTable Process(string pluginName, DataTable Data, String Arg)
 {
     IPlugin.IPlugin plugin = GetPlugin(pluginName);
     Data = plugin.Process(Data, Arg);
     return(Data);
 }