Por un lado te puede estar dando el error debido a que la clase UI no implementa el interfaz IUI, ten en cuenta que la palabra reservada "as" devuelve la instancia del interface o null si el objeto proporcionado no implementa dicho interfaz.
Sin embargo lo más probable es que el plugin del UI no este cargado.
En una estructura normal deberías tener algo como lo siguiente:
publicvoid Run() { // Obtener el plugin manager
IPluginManager plgMgr = new PluginManager();
plgMgr.PluginsPath = "plugins";
plgMgr.SearchPlugins(); // Asegurarse de que se cargan los plugins básicos if(plgMgr.LoadPlugin("UI") < 0) {
MessageBox.Show("No se pudo cargar el modulo requerido: UI"); return; } else {
plgMgr.ListPlugins()["UI"].Group = "Core";
plgMgr.ListPlugins()["UI"].CorePlugin = true;
IUI ui = Modules.Service("UI")as IUI;
Application.Run(ui.MainForm); } }
Eso es lo que hace la función run del módulo Core.dll en el ejemplo.
No puedo creer que no haya colgado las fuentes del ejemplo que son precisamente para ayudar a comprender el sistema. Un error mío. Las colgaré durante la semana próxima sin falta, mientras tanto mira a ver si eso te sirve para solucionar el problema. Si tienes alguna duda puedes mandarme un correo a
Pues pueden ser dos
Pues pueden ser dos motivos:
Por un lado te puede estar dando el error debido a que la clase UI no implementa el interfaz IUI, ten en cuenta que la palabra reservada "as" devuelve la instancia del interface o null si el objeto proporcionado no implementa dicho interfaz.
Sin embargo lo más probable es que el plugin del UI no este cargado.
En una estructura normal deberías tener algo como lo siguiente:
{
// Obtener el plugin manager
IPluginManager plgMgr = new PluginManager();
plgMgr.PluginsPath = "plugins";
plgMgr.SearchPlugins();
// Asegurarse de que se cargan los plugins básicos
if (plgMgr.LoadPlugin("UI") < 0)
{
MessageBox.Show("No se pudo cargar el modulo requerido: UI");
return;
}
else
{
plgMgr.ListPlugins()["UI"].Group = "Core";
plgMgr.ListPlugins()["UI"].CorePlugin = true;
IUI ui = Modules.Service("UI") as IUI;
Application.Run(ui.MainForm);
}
}
Eso es lo que hace la función run del módulo Core.dll en el ejemplo.
No puedo creer que no haya colgado las fuentes del ejemplo que son precisamente para ayudar a comprender el sistema. Un error mío. Las colgaré durante la semana próxima sin falta, mientras tanto mira a ver si eso te sirve para solucionar el problema. Si tienes alguna duda puedes mandarme un correo a
jorge(arroba)stackframe(punto)net