Esempio n. 1
0
        /// <summary>
        /// Invoke a module method
        /// </summary>
        /// <param name="module_name">
        /// A <see cref="System.String"/>
        /// </param>
        /// <param name="method">
        /// A <see cref="System.String"/>
        /// </param>
        /// <param name="list">
        /// A <see cref="System.Object[]"/>
        /// </param>
        /// <returns>
        /// A <see cref="System.Object"/>
        /// </returns>
        public static object callMethod(string module_name, string method, params object[] list)
        {
            SBIModule mod      = SBModule.getModule(module_name);
            Type      mod_type = mod.GetType();

            return(mod_type.GetMethod(method).Invoke(mod, list));
        }
Esempio n. 2
0
        /// <summary>
        /// Loads the modules.
        /// </summary>
        /// <returns>The modules.</returns>
        /// <param name="path">Path where modules assemblies are installed.</param>
        /// <param name="prefix">Module main class Prefix.</param>
        public static string[] loadModules(string path, string prefix)
        {
            SBModule.available_modules = new Hashtable();
            SBModule.assemblies        = new Hashtable();
            if (!Directory.Exists(path))
            {
                throw new Exception("Modules folder does not exists");
            }

            //get available modules
            string[] modules = Directory.GetFiles(path, prefix + "*.dll");

            foreach (string module in modules)
            {
                try
                {
                    //Console.WriteLine("Module => {0}", module);
                    string[] stack       = module.Split(Path.DirectorySeparatorChar);
                    string   module_name = stack[stack.Length - 1];
                    module_name = module_name.Substring(0, module_name.Length - 4);
                    //check prefix

                    //Assembly ass = Assembly.Load(module_name);
                    Assembly ass = Assembly.LoadFrom(module);
                    //AppDomain.CurrentDomain.Load(ass.GetName());

                    if (ass != null)
                    {
                        string module_class = String.Format("{0}.{1}", SBModule.name_space_modules, module_name);
                        Console.WriteLine("Module loaded: " + module_name);
                        Console.WriteLine("Module class: " + module_class);
                        Type ObjType = ass.GetType(module_class);
                        //Type ObjType = ass.GetType(String.Format("{0}.{1}", SMModule.name_space_modules, "SMIModule"));
                        if (ObjType != null)
                        {
                            //Console.WriteLine("Module Type: " + ObjType.ToString());
                            SBIModule the_module = (SBIModule)Activator.CreateInstance(ObjType);
                            SBModule.available_modules.Add(the_module.Key, the_module);
                            SBModule.assemblies.Add(the_module.Key, ass);
                        }
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine("Error loading module");
                    Console.WriteLine(ex.Message);
                }
            }

            return(modules);
        }
Esempio n. 3
0
 public static void attachModule(string name, SBIModule module)
 {
     SBModule.available_modules.Add(name, module);
     module.loadModule();
 }