/// <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(); }