Si bueno, una vez que lo comprendas no es nada difícil
Usando el código anterior, supongamos que mi aplicación es un notepad, normal igualito que el de windows.
entonces, en vez de programar el comportamiento en Form1.cs xD lo programas todo en AplicationManager, un pequeño ejemplo:
Nota: Código sin Visual Studio.
Ahora un sistema de plugins en el mismo código. Un plugin que saque un botón y muestre un formulario para ver las actualizaciones disponibles, y que también al cargar revise si hay actualizaciones
Es muy importate que tengas eventos y métodos por todo el AplicationManager, de esta forma puedes hacer más cosas con los plugines.
Ahora el código de los plugines:
Usando el código anterior, supongamos que mi aplicación es un notepad, normal igualito que el de windows.
entonces, en vez de programar el comportamiento en Form1.cs xD lo programas todo en AplicationManager, un pequeño ejemplo:
Nota: Código sin Visual Studio.
Código (csharp) [Seleccionar]
public class Form1: Form
{
void Guardar_Click(object sender, EventHandler e)
{
//este es el método que maneja el evento click del botón guardar del formulario.
// En vez de hacer todo el código para guardar acá, haces:
AplicationManager.SaveDocument(textbox1.Text);
//ves? de esta manera todo el comportamiento de la aplicación ya no se hace en el form1 :D
}
}
Ahora un sistema de plugins en el mismo código. Un plugin que saque un botón y muestre un formulario para ver las actualizaciones disponibles, y que también al cargar revise si hay actualizaciones
Código (csharp) [Seleccionar]
//para esto necesitamos que nuestro AplicationManager tenga acceso a todo, por eso:
//otra cosa! los plugines están en AplicationManager, en una Lista, algo así List<IPlugin>
// Y siempre son cargados antes de iniciar el formulario, esto lo haces en el Program.cs
public class Form1: Form
{
void Form_Load(object sender, EventHandler e)
{
AplicationManager.Current.MainForm = this;
// Obviamente en el AplicationManager tiene que haber una propiedad de tipo Form que se llame MainForm :D
}
void Guardar_Click(object sender, EventHandler e)
{
AplicationManager.Current.SaveDocument(textbox1.Text);
}
}
Es muy importate que tengas eventos y métodos por todo el AplicationManager, de esta forma puedes hacer más cosas con los plugines.
Ahora el código de los plugines:
Código (csharp) [Seleccionar]
public class UpdatePlugin : IPlugin
{
AplicationManager m_appMgr;
public void Update()
{
//Código para actualizar la aplicación
}
void Init(AplicationManager appManager)
{
m_appMgr = appManager;
Update(); //Este método se llama cuando se inicia la apliación porque al cargar los plugines se les debe llamar a éste método, o si quieres lo ahces en el constructor.
//ahora agarramos el form de AplicationManager y buscamos el Menu donde queremos meter el control y listo:
AplicationManager.Current.MainForm.FindControl(..... // ahí te lo dejo, tengo sueño ya hehehe
//también puedes crear un método para agregar botones a un menu en específico, eso lo pondrías en el Application manager.. pero bueno es cuestión de programar y añadir detalles..
}
void OnExit()
{ }
public string Name {get { return "Updates Plugin" } }
}