Example #1
0
        /// <summary>
        /// Creates the type instance
        /// </summary>
        /// <param name="plugin_name">Name of the plugin.</param>
        /// <param name="instanceName">Name of the instance.</param>
        /// <param name="output">The output.</param>
        /// <returns></returns>
        protected T GetPluginInstance(String plugin_name, String instanceName = "", ILogBuilder output = null, Object[] constructorSettings = null)
        {
            Type t = resolvePlugin(plugin_name, output);

            if (t == null)
            {
                return(null);
            }


            T instance = null;

            try
            {
                List <Object> settings = new List <Object>();
                if (constructorSettings != null)
                {
                    settings.AddRange(constructorSettings);
                }

                instance = Activator.CreateInstance(t, settings.ToArray()) as T;


                if (instance is IAcePluginBase)
                {
                    IAcePluginBase instance_IAcePluginBase = (IAcePluginBase)instance;
                    instance_IAcePluginBase.instanceName = instanceName;
                }
            }
            catch (Exception ex) {
                output.log("Plugin instance creation for [" + t.Name + "] failed as argument-less constructor not found?! Exception: " + ex.Message);
            }
            return(instance);
        }
        /// <summary>
        /// Gets a new instance of plug-in, specified by type name of sub directory.name path
        /// </summary>
        /// <param name="pluginName">Name of the plugin.</param>
        /// <param name="console">The console.</param>
        /// <param name="deployer">The deployer.</param>
        /// <param name="application">The application.</param>
        /// <param name="output">The output.</param>
        /// <returns></returns>
        public IAcePluginBase GetPluginInstance(String pluginName, IAceCommandConsole console, IAcePluginDeployerBase deployer, IAceApplicationBase application, ILogBuilder output = null)
        {
            if (output == null)
            {
                if (console != null)
                {
                    output = console.output;
                }
            }

            Type resolution = resolvePlugin(pluginName, output);

            if (resolution == null)
            {
                return(null);
            }

            IAcePluginBase plugin = Activator.CreateInstance(resolution, new Object[] { }) as IAcePluginBase;

            return(plugin);

            // resolution.getInstance();
        }