<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Kernel</name>
    </assembly>
    <members>
        <member name="T:Kernel.API.HttpClientServices">
            <summary>
            Provee servicios a través de un servicio <see cref="T:System.Net.Http.HttpClient"/> con una dirección base registrada
            </summary>
        </member>
        <member name="M:Kernel.API.HttpClientServices.#ctor(Microsoft.Extensions.Logging.ILogger{Kernel.API.HttpClientServices},System.Net.Http.HttpClient,Microsoft.Extensions.Options.IOptions{Kernel.Helpers.ServiceSettings},Microsoft.AspNetCore.Http.IHttpContextAccessor,Kernel.Core.Security.TokensManager)">
            <summary>
            Provee servicios a através de un servicio <see cref="T:System.Net.Http.HttpClient"/> con una dirección base registrada
            </summary>
            <param name="logger"></param>
            <param name="httpClient"></param>
            <param name="options"></param>
            <param name="contextAccessor"></param>
            <param name="tokensManager"></param>
        </member>
        <member name="M:Kernel.API.HttpClientServices.WepAPICallback``1(System.String,System.String,System.Object[])">
            <summary>
            Servicio de llamada al WebAPI. Se encarga de verificar el token de sesión, configurar los headers y realizar la llamada al servicio.
            </summary>
            <typeparam name="T">Tipo de dato esperado</typeparam>
            <param name="tokenGuid">Token de inicio de sesión. Para uso interno</param>
            <param name="requestUri">Ruta de la acción</param>
            <param name="args">Parámetros a enviar</param>
            <returns>Tipo de dato esperado</returns>
        </member>
        <member name="M:Kernel.API.HttpClientServices.Get``1(System.String,System.Object[],System.String,System.Boolean,System.Boolean)">
            <summary>
            Servicio de tipo Http.Get
            </summary>
            <typeparam name="T">Tipo de dato esperado</typeparam>
            <param name="requestUri">Ruta de la acción</param>
            <param name="args">Parámetros a enviar</param>
            <param name="tokenGuid">Token de inicio de sesión. Para uso interno</param>
            <param name="sendToken">true si se envía el token de autenticación</param>
            <param name="throwException">true si se invoca una excepción si el servicio falla</param>
            <returns></returns>
        </member>
        <member name="M:Kernel.API.HttpClientServices.Post``1(System.String,System.Object,System.Object[],System.String,System.Boolean,System.Boolean)">
            <summary>
            Servicio de tipo Http.Put
            </summary>
            <typeparam name="T">Tipo de dato esperado</typeparam>
            <param name="requestUri">Ruta de la acción</param>
            <param name="data">Contiene los datos a enviar</param>
            <param name="args">Parámetros a enviar</param>
            <param name="tokenGuid">Token de inicio de sesión. Para uso interno</param>
            <param name="sendToken">true si se envía el token de autenticación</param>
            <param name="throwException">true si se invoca una excepción si el servicio falla</param>
            <returns></returns>
        </member>
        <member name="M:Kernel.API.HttpClientServices.SetupHeaders``1(System.Object[],System.Boolean)">
            <summary>
            Configura los headers para la llamada al servicio. Si headersInBody es true se fuerza el envío de los parámetros por Body en lugar de Headers. 
            Esto es útil para servicios que esperan parámetros individuales en headers pero pueden tener problemas con tamaños grandes de headers. 
            Además, se verifica si el tipo esperado es un modelo JSON extendable para configurar adecuadamente la serialización.
            NOTA: El tamaño máximo de headers en HTTP es de aproximadamente 8KB, pero es recomendable mantenerse por debajo de los 4KB para evitar problemas con proxies y servidores.
            </summary>
            <typeparam name="T"></typeparam>
            <param name="headersInBody"></param>
            <param name="args"></param>
            <returns>Objeto JsonContent configurado con los headers</returns>
        </member>
        <member name="T:Kernel.API.Services">
            <summary>
            Contiene los métodos y propiedades básicos para la gestión de los plugins y su correcto funcionamiento.  
            Proporciona los servicios del core para los plugins para su instalación, desinstalación, creación de eventos 
            tales como acciones y filtros, adición de dichos eventos, así como la eliminación y desinstalación de los mismos.
            También se encarga de invocar el método de ejecución configurado en los eventos, teniendo en cuenta la prioridad
            especificada, enviando los parámetros que la acción o filtro requieran.
            A continuación la lista de los principales métodos que esta clase implementa
            * <see cref="M:Kernel.API.Services.CreateAction(System.String)"/>
            * <see cref="M:Kernel.API.Services.CreateFilter(System.String)"/>
            * <see cref="M:Kernel.API.Services.AddAction(Kernel.Plugins.IPluginModule,System.String,System.String,Kernel.Plugins.Events.ActionCallback,System.Int32)"/>
            * <see cref="M:Kernel.API.Services.AddFilter``1(Kernel.Plugins.IPluginModule,System.String,System.String,Kernel.Plugins.Events.FilterCallback{``0},System.Int32,System.Boolean)"/>
            * <see cref="M:Kernel.API.Services.RemoveAction(System.String)"/>
            * <see cref="M:Kernel.API.Services.RemoveFilter(System.String)"/>
            * <see cref="M:Kernel.API.Services.DoAction(System.String,System.Object[])"/>
            * <see cref="M:Kernel.API.Services.DoFilter``1(System.String,System.Object[])"/>
            * <see cref="M:Kernel.API.Services.DeleteAction(System.String,Kernel.Plugins.Events.Action)"/>
            * <see cref="M:Kernel.API.Services.DeleteFilter(System.String,Kernel.Plugins.Events.IFilter)"/>
            </summary>
        </member>
        <member name="P:Kernel.API.Services.Configuration">
            <summary>
            Instancia de tipo <see cref="T:Microsoft.Extensions.Configuration.IConfiguration"/>
            </summary>
        </member>
        <member name="P:Kernel.API.Services.ApplicationServices">
            Instancia de tipo <see cref="T:System.IServiceProvider"/>
        </member>
        <member name="P:Kernel.API.Services.ServiceCollection">
            Instancia de tipo <see cref="T:Microsoft.Extensions.DependencyInjection.IServiceCollection"/>
        </member>
        <member name="P:Kernel.API.Services.IsWebApp">
            <summary>
            true si el servicio está instalado en una aplicación Web
            </summary>
        </member>
        <member name="P:Kernel.API.Services.IsWebAPI">
            <summary>
            true si el servicio está instalado en una aplicación tipo Web API
            </summary>
        </member>
        <member name="M:Kernel.API.Services.#ctor(Kernel.Core.PluginsManager,Kernel.Core.IKernelApp,Microsoft.Extensions.Logging.ILogger{Kernel.API.Services})">
            <summary>
            Constructor
            </summary>
            <param name="pluginsManager">Parámetro de tipo <see cref="T:Kernel.Core.PluginsManager"/></param>
            <param name="kernelApp">Parámetro de tipo <see cref="T:Kernel.Core.IKernelApp"/></param>
            <param name="logger">Parámetro de tipo <see cref="T:Microsoft.Extensions.Logging.ILogger`1"/></param>
        </member>
        <member name="M:Kernel.API.Services.CreateAction(System.String)">
            <summary>
            Crea una nueva acción con el nombre proporcionado. Debe ser único y con el formato {NombrePlugin}.{NombreEvento}
            </summary>
            <param name="fullEventName">Nombre completo de la acción. Debe tener el formato {NombrePluginBase}.{NombreEvento}</param>
        </member>
        <member name="M:Kernel.API.Services.CreateFilter(System.String)">
            <summary>
            Crea un nuevo filtro con el nombre proporcionado. Debe ser único y con el formato {NombrePlugin}.{NombreEvento}
            </summary>
            <param name="fullEventName">Nombre completo del filtro. Debe tener el formato {NombrePluginBase}.{NombreEvento}</param>
        </member>
        <member name="M:Kernel.API.Services.RemoveAction(System.String)">
            <summary>
            Elimina la acción de la lista de acciones registradas con el nombre proporcionado
            </summary>
            <param name="fullEventName">Nombre completo de la acción. Debe tener el formato {NombrePluginBase}.{NombreEvento}</param>
        </member>
        <member name="M:Kernel.API.Services.RemoveFilter(System.String)">
            <summary>
            Elimina el filtro de la lista de filtros con el nombre proporcionado
            </summary>
            <param name="fullEventName">Nombre completo del filtro. Debe tener el formato {NombrePluginBase}.{NombreEvento}</param>
        </member>
        <member name="M:Kernel.API.Services.AddAction(Kernel.Plugins.IPluginModule,System.String,System.String,Kernel.Plugins.Events.ActionCallback,System.Int32)">
            <summary>
            Registra una función de callback para una acción específica. De tal manera que el plugin registra un método que se ejecuta 
            para la acción indicada. Al registrar la acción el método indica la prioridad con la que corre. De tal manera que este nivel de 
            prioridad determina el orden en que se ejecuta cuando haya varios métodos asociados a la misma acción registradas por varios plugins
            </summary>
            <param name="pluginCore">Parámetro de tipo <see cref="T:Kernel.Plugins.IPluginModule"/></param>
            <param name="pluginModuleName">Si el plugin es de tipo módulo debe ser el mismo nombre del plugin. Cuando es una extensión de un plugin módulo, 
            el nombre del plugin que extiende</param>
            <param name="eventName">Nombre de la acción a ejectuar</param>
            <param name="action">Método que se debe ejectuar</param>
            <param name="priority">Prioridad de la acción a ejectuar. 10 por defecto</param>
        </member>
        <member name="M:Kernel.API.Services.AddAction(Kernel.Plugins.IPluginModule,Kernel.Plugins.Events.Action)">
            <summary>
            Registra una función de callback para una acción específica. De tal manera que el plugin registra un método que se ejecuta 
            para la acción indicada. Al registrar la acción el método indica la prioridad con la que corre. De tal manera que este nivel de 
            prioridad determina el orden en que se ejecuta cuando haya varios métodos asociados a la misma acción registradas por varios plugins
            </summary>
            <param name="pluginCore">Parámetro de tipo <see cref="T:Kernel.Plugins.IPluginModule"/></param>
            <param name="pluginAction">De tipo <see cref="T:Kernel.Plugins.Events.Action"/></param>
        </member>
        <member name="M:Kernel.API.Services.AddActions(Kernel.Plugins.IPluginModule,System.Collections.Generic.IEnumerable{Kernel.Plugins.Events.Action})">
            <summary>
            Registra una lista de funciones de callback cada una con una acción específica. De tal manera que el plugin registra un método que se 
            ejecuta para la acción indicada. Al registrar la acción el método indica la prioridad con la que corre. De tal manera que este nivel 
            de prioridad determina el orden en que se ejecuta cuando haya varios métodos asociados a la misma acción registradas por varios plugins
            </summary>
            <param name="pluginCore">Parámetro de tipo <see cref="T:Kernel.Plugins.IPluginModule"/></param>
            <param name="actions">Lista de acciones de tipo <see cref="T:Kernel.Plugins.Events.Action"/> </param>
        </member>
        <member name="M:Kernel.API.Services.AddFilter``1(Kernel.Plugins.IPluginModule,System.String,System.String,Kernel.Plugins.Events.FilterCallback{``0},System.Int32,System.Boolean)">
            <summary>
            Registra una función de callback para un filtro específico. De tal manera que el plugin podrá gestionar los datos del filtro 
            indicado mediante esta función.
            </summary>
            <param name="pluginCore">Parámetro de tipo <see cref="T:Kernel.Plugins.IPluginModule"/></param>
            <param name="pluginModuleName">Si el plugin es de tipo módulo debe ser el mismo nombre del plugin. Cuando es una extensión de un plugin módulo, 
            el nombre del plugin que extiende</param>
            <param name="eventName">Nombre del filtro a ejectuar</param>
            <param name="filter">Método que se debe ejectuar</param>
            <param name="priority">Prioridad de la acción a ejectuar. 10 por defecto</param>
            <param name="serialize">Si se debe serializer el resultado. true por defecto</param>
        </member>
        <member name="M:Kernel.API.Services.AddFilter(Kernel.Plugins.IPluginModule,Kernel.Plugins.Events.IFilter)">
            <summary>
            Registra una función de callback para un filtro específico. De tal manera que el plugin podrá gestionar los datos del filtro 
            indicado mediante esta función.
            </summary>
            <param name="pluginCore">Parámetro de tipo <see cref="T:Kernel.Plugins.IPluginModule"/></param>
            <param name="pluginFilter">De tipo <see cref="T:Kernel.Plugins.Events.IFilter"/> </param>
        </member>
        <member name="M:Kernel.API.Services.AddFilters(Kernel.Plugins.IPluginModule,System.Collections.Generic.IEnumerable{Kernel.Plugins.Events.IFilter})">
            <summary>
            Registra una lista de funciones de callback cada una para un filtro específico. De tal manera que el plugin podrá gestionar 
            los datos del filtro indicado mediante esta función.
            </summary>
            <param name="pluginCore">Parámetro de tipo <see cref="T:Kernel.Plugins.IPluginModule"/></param>
            <param name="filters">Lista de filtros de tipo <see cref="T:Kernel.Plugins.Events.IFilter"/></param>
        </member>
        <member name="M:Kernel.API.Services.DeleteAction(System.String,Kernel.Plugins.Events.Action)">
            <summary>
            Elimina la acción especificada de la lista de acciones registradas. El nombre debe tener el formato {NombrePluginModulo}.{NombreEvento}.
            </summary>
            <param name="fullEventName">Nombre completo del evento. Debe tener el formato {PluginModuleName}.{EventName}</param>
            <param name="action">Parámetro de tipo <see cref="T:Kernel.Plugins.Events.Action"/></param>
        </member>
        <member name="M:Kernel.API.Services.DeleteFilter(System.String,Kernel.Plugins.Events.IFilter)">
            <summary>
            Elimina el filtro especificado de la lista de filtros registrados. El nombre debe tener el formato {NombrePluginModulo}.{NombreEvento}.
            </summary>
            <param name="fullEventName">Nombre completo del evento. Debe tener el formato {PluginModuleName}.{EventName}</param>
            <param name="filter">Parámetro de tipo <see cref="T:Kernel.Plugins.Events.IFilter"/></param>
        </member>
        <member name="M:Kernel.API.Services.DoAction(System.String,System.Object[])">
            <summary>
            Procesa las acciones con el nombre completo y los argumentos proporcionados, dependiendo de la prioridad que éstas tengan, en orden ascendente
            El nombre debe tener el formato {NombrePluginModulo}.{NombreEvento}
            </summary>
            <param name="fullEventName">Nombre completo del evento. Debe tener el formato {PluginModuleName}.{EventName}</param>
            <param name="args">Parámetros utilizados por el evento</param>
        </member>
        <member name="M:Kernel.API.Services.DoFilter``1(System.String,System.Object[])">
            <summary>
            Procesa los filtros con el nombre completo y los argumentos proporcionados, dependiendo de la prioridad que éstas tengan, en orden ascendente
            El nombre debe tener el formato {NombrePlugin}.{NombreEvento}. 
            El valor devuelto por DoFilter se envía al siguiente DoFilter para que de ser necesario, cada uno de ellos pueda modificar el resultado y
            cuando se procesen todos los filtros que correspondan a a este nombre, obtener un resultado final. 
            Cada resultado devuelto por DoFilter se serializa para el siguiente DoFilter, si así está configurado el filtro que va a recibir este resultado. 
            Para mayor información consultar <see cref="T:Kernel.Plugins.Events.Filter`1"/>
            </summary>
            <typeparam name="T">Tipo de objeto que debe retornar el filtro</typeparam>
            <param name="fullEventName">Nombre completo del evento. Debe tener el formato {PluginModuleName}.{EventName}</param>
            <param name="args">Parámetros utilizados por el evento</param>
            <returns>Un valor de tipo T</returns>
        </member>
        <member name="M:Kernel.API.Services.AddWebService(Kernel.WebAPI.WebService)">
            <summary>
            Adiciona un servicio web API con la información suministrada por el parámetro pluginWebService
            </summary>
            <param name="pluginWebService">Parámetro de tipo <see cref="T:Kernel.WebAPI.WebService"/> que contiene la información necesaria para la 
            creación del servicio web</param>
        </member>
        <member name="M:Kernel.API.Services.AddMenu(Kernel.WebApp.MenuInfo)">
            <summary>
            Registra un menú para una aplicación IKernelWebApp con la información suministrada por el parámetro menuInfo
            </summary>
            <param name="menuInfo">Parámetro de tipo <see cref="T:Kernel.WebApp.MenuInfo"/> que contiene la información necesaria para la 
            creación del menú</param>
        </member>
        <member name="M:Kernel.API.Services.WepAPICallback``1(System.String,System.String,System.Object[])">
            <summary>
            Hace un HttpRequest con la dirección webAPIServer/action y los parámetros proporcionados
            </summary>
            <typeparam name="T">Tipo de dato esperado</typeparam>
            <param name="tokenGuid">Token de inicio de sesión. Para uso interno</param>
            <param name="action">Acción en formato Módulo/Servicio</param>
            <param name="args">Parámetros a enviar</param>
            <returns></returns>
        </member>
        <member name="M:Kernel.API.Services.FindMenu(System.String,System.String)">
            <summary>
            Busca el menú con el nombre del módulo y servicio
            </summary>
            <param name="module">Nombre del módulo</param>
            <param name="service">Nombre del servicio</param>
            <returns></returns>
        </member>
        <member name="M:Kernel.API.Services.FindEvent(System.String,System.String,Kernel.Plugins.Events.EventType)">
            <summary>
            Busca el evento que haya sido registrado con el plugin de tipo módulo del parámetro <paramref name="pluginModuleName"/> y 
            con nombre de evento del parámetro <paramref name="eventName"/>
            </summary>
            <param name="pluginModuleName">Si el plugin es de tipo módulo debe ser el mismo nombre del plugin. Cuando es una extensión de un plugin módulo, 
            el nombre del plugin que extiende</param>
            <param name="eventName">Nombre del evento</param>
            <param name="eventType">Tipo de evento</param>
            <returns>Objeto de tipo <see cref="T:Kernel.Plugins.Events.IEvent"/></returns>
        </member>
        <member name="M:Kernel.API.Services.DoMenuEvent``1(System.String,System.String,Kernel.Core.Security.LoginToken)">
            <summary>
            Procesa las acciones o filtros utilizando el nombre del módulo y del servicio, e invocando a 
            <see cref="M:Kernel.API.Services.DoAction(System.String,System.Object[])"/> o <see cref="M:Kernel.API.Services.DoFilter``1(System.String,System.Object[])"/> dependiendo del tipo de evento
            </summary>
            <typeparam name="T">Tipo de objeto que debe retornar cuando el evento es un filtro</typeparam>
            <param name="module">Nombre del módulo a ejecutar</param>
            <param name="service">Nombre del servicio a ejecutar</param>
            <param name="loginToken">Token de sesión</param>
            <returns>Un valor de tipo T si el evento es un filtro</returns>
        </member>
        <member name="T:Kernel.Core.DynamicActionDescriptorChangeProvider">
            <summary>
            Clase que implementa la interfaz <see cref="T:Microsoft.AspNetCore.Mvc.Infrastructure.IActionDescriptorChangeProvider"/> para notificar a ASP.NET que debe reconstruir la tabla de acciones/rutas 
            cuando se instalan o desinstalan plugins
            </summary>
        </member>
        <member name="P:Kernel.Core.DynamicActionDescriptorChangeProvider.Instance">
            <summary>
            Instancia de tipo <see cref="T:Kernel.Core.DynamicActionDescriptorChangeProvider"/> para utilizar en la aplicación. Se implementa como singleton para que se pueda 
            compartir en toda la aplicación y así notificar a ASP.NET que debe reconstruir la tabla de acciones/rutas cuando se instalan o desinstalan plugins
            </summary>
        </member>
        <member name="M:Kernel.Core.DynamicActionDescriptorChangeProvider.GetChangeToken">
            <summary>
            Cambiamos el tipo de retorno para envolver el token de cancelación
            </summary>
            <returns></returns>
        </member>
        <member name="M:Kernel.Core.DynamicActionDescriptorChangeProvider.HasChanged">
            <summary>
            Se invoca cuando se instalan o desinstalan plugins para cancelar el token de cancelación y así notificar a ASP.NET que debe reconstruir la tabla de acciones/rutas
            </summary>
        </member>
        <member name="T:Kernel.Core.ServicesExtensions">
            <summary>
            Clase que implementa extensiones a los servicios <see cref="T:Microsoft.Extensions.DependencyInjection.IServiceCollection"/>
            </summary>
        </member>
        <member name="M:Kernel.Core.ServicesExtensions.ConfigureServices(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Collections.Generic.IEnumerable{Microsoft.Extensions.DependencyInjection.ServiceDescriptor})">
            <summary>
            Guarda los servicios recibios en el parámetro serviceDescriptors/>
            </summary>
            <param name="services">Lista de servicios de tipo <see cref="T:Microsoft.Extensions.DependencyInjection.IServiceCollection"/></param>
            <param name="serviceDescriptors">Lista de servicios a almacenar</param>
            <returns></returns>
        </member>
        <member name="M:Kernel.Core.ServicesExtensions.RemoveServices(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Collections.Generic.IEnumerable{Microsoft.Extensions.DependencyInjection.ServiceDescriptor})">
            <summary>
            Remueve los servicios recibios en el parámetro serviceDescriptors/>
            </summary>
            <param name="services">Lista de servicios de tipo <see cref="T:Microsoft.Extensions.DependencyInjection.IServiceCollection"/></param>
            <param name="serviceDescriptors">Lista de servicios a remover</param>
            <returns></returns>
        </member>
        <member name="M:Kernel.Core.ServicesExtensions.GetScopedServiceDescriptors``1(System.Type[])">
            <summary>
            Configura la lista de servicios para una clase de tipo T
            </summary>
            <typeparam name="T"></typeparam>
            <param name="types">Lista con los tipos de servicios a configurar</param>
            <returns></returns>
        </member>
        <member name="M:Kernel.Core.ServicesExtensions.AddKernelWebAppServices``1(Microsoft.Extensions.DependencyInjection.IServiceCollection,``0)">
            <summary>
            Configura los servicios principales para una aplicación que implementa la interfaz <see cref="T:Kernel.WebApp.IKernelWebApp"/>
            </summary>
            <typeparam name="TStartup">Clase que debe implementar las interfaces <see cref="T:Kernel.WebApp.IKernelWebApp"/> y <see cref="T:Kernel.Helpers.IHttpClientErrorPolicy"/></typeparam>
            <param name="services">Lista de servicios <see cref="T:Microsoft.Extensions.DependencyInjection.IServiceCollection"/></param>
            <param name="startup">Clase que debe implementar las interfaces <see cref="T:Kernel.WebApp.IKernelWebApp"/> y <see cref="T:Kernel.Helpers.IHttpClientErrorPolicy"/></param>
            <returns>A reference to this instance after the operation has completed.</returns>
        </member>
        <member name="M:Kernel.Core.ServicesExtensions.AddKernelWebAPIServices``1(Microsoft.Extensions.DependencyInjection.IServiceCollection,``0)">
            <summary>
            Configura los servicios principales para una aplicación que implementa la interfaz <see cref="T:Kernel.WebAPI.IKernelWebAPI"/>
            </summary>
            <typeparam name="TStartup">Clase que debe implementar la interfaz <see cref="T:Kernel.WebAPI.IKernelWebAPI"/></typeparam>
            <param name="services">Lista de servicios <see cref="T:Microsoft.Extensions.DependencyInjection.IServiceCollection"/></param>
            <param name="startup">Clase que debe implementar la interfaz <see cref="T:Kernel.WebAPI.IKernelWebAPI"/></param>
            <returns></returns>
        </member>
        <member name="T:Kernel.Core.IKernelApp">
            <summary>
            Interfaz que representa la aplicación principal que se está ejecutando, y que puede ser el Kernel o la aplicación front end. 
            Los plugins se instalan en ésta aplicación
            </summary>
        </member>
        <member name="P:Kernel.Core.IKernelApp.Configuration">
            <summary>
            Propiedad de tipo <see cref="T:Microsoft.Extensions.Configuration.IConfiguration"/>
            </summary>
        </member>
        <member name="P:Kernel.Core.IKernelApp.ApplicationServices">
            <summary>
            Propiedad de tipo <see cref="T:System.IServiceProvider"/>
            </summary>
        </member>
        <member name="P:Kernel.Core.IKernelApp.ServiceCollection">
            <summary>
            Propiedad de tipo <see cref="T:Microsoft.Extensions.DependencyInjection.IServiceCollection"/>
            </summary>
        </member>
        <member name="P:Kernel.Core.IKernelApp.KernelAPI">
            <summary>
            Instancial de tipo <see cref="T:Kernel.API.Services"/>
            </summary>
        </member>
        <member name="M:Kernel.Core.IKernelApp.GetSharedTypesToInclude">
            <summary>
            Tipos de clases compartidas que se utilizan por los plugins y sus extensiones
            </summary>
        </member>
        <member name="M:Kernel.Core.IKernelApp.StartApplication(Microsoft.AspNetCore.Builder.IApplicationBuilder)">
            <summary>
            Inicio de la aplicación
            </summary>
            <param name="app"></param>
        </member>
        <member name="M:Kernel.Core.IKernelApp.EndApplication">
            <summary>
            Fin de la aplicación
            </summary>
        </member>
        <member name="T:Kernel.Core.PluginsManager">
            <summary>
            Contiene los métodos y propiedades básicos para la gestión de los plugins y su correcto funcionamiento.  
            Proporciona los servicios del core para los plugins para su instalación, desinstalación, creación de eventos 
            tales como acciones y filtros, adición de dichos eventos, así como la eliminación y desinstalación de los mismos.
            También se encarga de invocar el método de ejecución configurado en los eventos, teniendo en cuenta la prioridad
            especificada, enviando los parámetros que la acción o filtro requieran.
            A continuación la lista de los principales métodos que esta clase implementa
            * <see cref="M:Kernel.Core.PluginsManager.CreateAction(System.String)"/>
            * <see cref="M:Kernel.Core.PluginsManager.CreateFilter(System.String)"/>
            * <see cref="M:Kernel.Core.PluginsManager.AddAction(Kernel.Plugins.IPluginModule,System.String,System.String,Kernel.Plugins.Events.ActionCallback,System.Int32)"/>
            * <see cref="M:Kernel.Core.PluginsManager.AddFilter``1(Kernel.Plugins.IPluginModule,System.String,System.String,Kernel.Plugins.Events.FilterCallback{``0},System.Int32,System.Boolean)"/>
            * <see cref="M:Kernel.Core.PluginsManager.RemoveAction(System.String)"/>
            * <see cref="M:Kernel.Core.PluginsManager.RemoveFilter(System.String)"/>
            * <see cref="M:Kernel.Core.PluginsManager.DoAction(System.String,System.Object[])"/>
            * <see cref="M:Kernel.Core.PluginsManager.DoFilter``1(System.String,System.Object[])"/>
            * <see cref="M:Kernel.Core.PluginsManager.DeleteAction(System.String,Kernel.Plugins.Events.Action)"/>
            * <see cref="M:Kernel.Core.PluginsManager.DeleteFilter(System.String,Kernel.Plugins.Events.IFilter)"/>
            </summary>
        </member>
        <member name="P:Kernel.Core.PluginsManager.Assemblies">
            <summary>
            Lista de tipo <see cref="T:System.Reflection.Assembly"/> con los assemblies cargados con el plugin
            </summary>
        </member>
        <member name="P:Kernel.Core.PluginsManager.KernelApp">
            <summary>
            Instancia que representa la aplicación Web App o servidor Wep API del Kernel que se está ejecutando y sobre la que se han instalado los plugins
            </summary>
        </member>
        <member name="P:Kernel.Core.PluginsManager.MonitoringEnabled">
            <summary>
            Variable que se enciende cuando se quiera monitorear si hay cambios en el archivo de configuración
            </summary>
        </member>
        <member name="M:Kernel.Core.PluginsManager.StartPlugins">
            <summary>
            Carga y activa los plugins que se hayan instalado.
            </summary>
        </member>
        <member name="P:Kernel.Core.PluginsManager.Plugins">
            <summary>
            Lista de tipo <see cref="T:Kernel.Plugins.IPluginModule"/> con los plugins que se han cargado de manera dinámica en el momento en que se activa cada uno de ellos
            </summary>
        </member>
        <member name="P:Kernel.Core.PluginsManager.PluginEventAttributes">
            <summary>
            Lista de tipo <see cref="T:Kernel.Plugins.Events.EventAttributeEx"/> que contiene los eventos (filtros o acciones) con la información básica del plugin
            </summary>
        </member>
        <member name="P:Kernel.Core.PluginsManager.Actions">
            <summary>
            Diccionario de tipo <see cref="T:Kernel.Plugins.Events.Action"/> con las acciones que implementa el plugin
            </summary>
        </member>
        <member name="P:Kernel.Core.PluginsManager.Filters">
            <summary>
            Diccionario de tipo <see cref="T:Kernel.Plugins.Events.IFilter"/> con los filtros que implementa el plugin
            </summary>
        </member>
        <member name="P:Kernel.Core.PluginsManager.GlobalConfiguration">
            <summary>
            Instancia de tipo <see cref="T:Microsoft.Extensions.Configuration.IConfiguration"/> para el manejo de la configuración global de la aplicación
            </summary>
        </member>
        <member name="P:Kernel.Core.PluginsManager.PluginsConfiguration">
            <summary>
            Instancia de tipo <see cref="T:Microsoft.Extensions.Configuration.IConfiguration"/> para el manejo dela configuración del plugin
            </summary>
        </member>
        <member name="P:Kernel.Core.PluginsManager.PluginConfigurationList">
            <summary>
            Lista de tipo <see cref="T:Kernel.Plugins.Configuration"/>
            </summary>
        </member>
        <member name="P:Kernel.Core.PluginsManager.Logger">
            <summary>
            Instancia de tipo <see cref="T:Microsoft.Extensions.Logging.ILogger`1"/>
            </summary>
        </member>
        <member name="M:Kernel.Core.PluginsManager.#ctor(Microsoft.Extensions.Configuration.IConfiguration,Kernel.Core.IKernelApp,Microsoft.Extensions.Logging.ILogger{Kernel.Core.PluginsManager})">
            <summary>
            Constructor de la clase <see cref="T:Kernel.Core.PluginsManager"/>. Se crea a través de Dependency Injection
            Para mayor información consultar el siguiente enlace https://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-5.0/>
            </summary>
            <param name="configuration">Parámetro de tipo <see cref="T:Microsoft.Extensions.Configuration.IConfiguration"/></param>
            <param name="kernelApp">Parámetro de tipo <see cref="T:Kernel.Core.IKernelApp"/></param>
            <param name="logger">Parámetro de tipo <see cref="T:Microsoft.Extensions.Logging.ILogger`1"/></param>
        </member>
        <member name="M:Kernel.Core.PluginsManager.CreateAction(System.String)">
            <summary>
            Crea una nueva acción con el nombre proporcionado. Debe ser único y con el formato {NombrePlugin}.{NombreEvento}
            </summary>
            <param name="fullEventName">Nombre completo de la acción. Debe tener el formato {NombrePluginBase}.{NombreEvento}</param>
        </member>
        <member name="M:Kernel.Core.PluginsManager.CreateFilter(System.String)">
            <summary>
            Crea un nuevo filtro con el nombre proporcionado. Debe ser único y con el formato {NombrePlugin}.{NombreEvento}
            </summary>
            <param name="fullEventName">Nombre completo del filtro. Debe tener el formato {NombrePluginBase}.{NombreEvento}</param>
        </member>
        <member name="M:Kernel.Core.PluginsManager.RemoveAction(System.String)">
            <summary>
            Elimina la acción de la lista de acciones registradas con el nombre proporcionado. El nombre debe tener el formato {NombrePluginModulo}.{NombreEvento}.
            </summary>
            <param name="fullEventName">Nombre completo de la acción. Debe tener el formato {NombrePluginBase}.{NombreEvento}</param>
        </member>
        <member name="M:Kernel.Core.PluginsManager.RemoveFilter(System.String)">
            <summary>
            Elimina el filtro de la lista de filtros con el nombre proporcionado. El nombre debe tener el formato {NombrePluginModulo}.{NombreEvento}.
            </summary>
            <param name="fullEventName">Nombre completo del filtro. Debe tener el formato {NombrePluginBase}.{NombreEvento}</param>
        </member>
        <member name="M:Kernel.Core.PluginsManager.AddAction(Kernel.Plugins.IPluginModule,System.String,System.String,Kernel.Plugins.Events.ActionCallback,System.Int32)">
            <summary>
            Registra una función de callback para una acción específica. De tal manera que el plugin registra un método que se ejecuta 
            para la acción indicada. Al registrar la acción el método indica la prioridad con la que corre. De tal manera que este nivel de 
            prioridad determina el orden en que se ejecuta cuando haya varios métodos asociados a la misma acción registradas por varios plugins
            </summary>
            <param name="pluginCore">Parámetro de tipo <see cref="T:Kernel.Plugins.IPluginModule"/></param>
            <param name="pluginModuleName">Si el plugin es de tipo módulo debe ser el mismo nombre del plugin. Cuando es una extensión de un plugin módulo, 
            el nombre del plugin que extiende</param>
            <param name="eventName">Nombre de la acción a ejectuar</param>
            <param name="action">Método que se debe ejectuar</param>
            <param name="priority">Prioridad de la acción a ejectuar. 10 por defecto</param>
        </member>
        <member name="M:Kernel.Core.PluginsManager.AddAction(Kernel.Plugins.IPluginModule,Kernel.Plugins.Events.Action)">
            <summary>
            Registra una función de callback para una acción específica. De tal manera que el plugin registra un método que se ejecuta 
            para la acción indicada. Al registrar la acción el método indica la prioridad con la que corre. De tal manera que este nivel de 
            prioridad determina el orden en que se ejecuta cuando haya varios métodos asociados a la misma acción registradas por varios plugins
            </summary>
            <param name="pluginCore">Parámetro de tipo <see cref="T:Kernel.Plugins.IPluginModule"/></param>
            <param name="pluginAction">De tipo <see cref="T:Kernel.Plugins.Events.Action"/></param>
        </member>
        <member name="M:Kernel.Core.PluginsManager.AddActions(Kernel.Plugins.IPluginModule,System.Collections.Generic.IEnumerable{Kernel.Plugins.Events.Action})">
            <summary>
            Registra una lista de funciones de callback cada una con una acción específica. De tal manera que el plugin registra un método que se 
            ejecuta para la acción indicada. Al registrar la acción el método indica la prioridad con la que corre. De tal manera que este nivel 
            de prioridad determina el orden en que se ejecuta cuando haya varios métodos asociados a la misma acción registradas por varios plugins
            </summary>
            <param name="pluginCore">Parámetro de tipo <see cref="T:Kernel.Plugins.IPluginModule"/></param>
            <param name="actions">Lista de acciones de tipo <see cref="T:Kernel.Plugins.Events.Action"/> </param>
        </member>
        <member name="M:Kernel.Core.PluginsManager.AddFilter``1(Kernel.Plugins.IPluginModule,System.String,System.String,Kernel.Plugins.Events.FilterCallback{``0},System.Int32,System.Boolean)">
            <summary>
            Registra una función de callback para un filtro específico. De tal manera que el plugin podrá gestionar los datos del filtro 
            indicado mediante esta función.
            </summary>
            <param name="pluginCore">Parámetro de tipo <see cref="T:Kernel.Plugins.IPluginModule"/></param>
            <param name="pluginModuleName">Si el plugin es de tipo módulo debe ser el mismo nombre del plugin. Cuando es una extensión de un plugin módulo, 
            el nombre del plugin que extiende</param>
            <param name="eventName">Nombre del filtro a ejectuar</param>
            <param name="filter">Método que se debe ejectuar</param>
            <param name="priority">Prioridad de la acción a ejectuar. 10 por defecto</param>
            <param name="serialize">Si se debe serializer el resultado. true por defecto</param>
        </member>
        <member name="M:Kernel.Core.PluginsManager.FindEvent(System.String,System.String,Kernel.Plugins.Events.EventType)">
            <summary>
            Busca el evento que haya sido registrado con el plugin de tipo módulo del parámetro <paramref name="pluginModuleName"/> y 
            con nombre de evento del parámetro <paramref name="eventName"/>
            </summary>
            <param name="pluginModuleName">Si el plugin es de tipo módulo debe ser el mismo nombre del plugin. Cuando es una extensión de un plugin módulo, 
            el nombre del plugin que extiende</param>
            <param name="eventName">Nombre del evento</param>
            <param name="eventType">Tipo de evento</param>
            <returns>Objeto de tipo <see cref="T:Kernel.Plugins.Events.IEvent"/></returns>
        </member>
        <member name="M:Kernel.Core.PluginsManager.AddFilter(Kernel.Plugins.IPluginModule,Kernel.Plugins.Events.IFilter)">
            <summary>
            Registra una función de callback para un filtro específico. De tal manera que el plugin podrá gestionar los datos del filtro 
            indicado mediante esta función.
            </summary>
            <param name="pluginCore">Parámetro de tipo <see cref="T:Kernel.Plugins.IPluginModule"/></param>
            <param name="pluginFilter">De tipo <see cref="T:Kernel.Plugins.Events.IFilter"/> </param>
        </member>
        <member name="M:Kernel.Core.PluginsManager.AddFilters(Kernel.Plugins.IPluginModule,System.Collections.Generic.IEnumerable{Kernel.Plugins.Events.IFilter})">
            <summary>
            Registra una lista de funciones de callback cada una para un filtro específico. De tal manera que el plugin podrá gestionar 
            los datos del filtro indicado mediante esta función.
            </summary>
            <param name="pluginCore">Parámetro de tipo <see cref="T:Kernel.Plugins.IPluginModule"/></param>
            <param name="filters">Lista de filtros de tipo <see cref="T:Kernel.Plugins.Events.IFilter"/></param>
        </member>
        <member name="M:Kernel.Core.PluginsManager.DeleteAction(System.String,Kernel.Plugins.Events.Action)">
            <summary>
            Elimina la acción especificada de la lista de acciones registradas. El nombre debe tener el formato {NombrePluginModulo}.{NombreEvento}.
            </summary>
            <param name="fullEventName">Nombre completo del evento. Debe tener el formato {PluginModuleName}.{EventName}</param>
            <param name="action">Parámetro de tipo <see cref="T:Kernel.Plugins.Events.Action"/></param>
        </member>
        <member name="M:Kernel.Core.PluginsManager.DeleteFilter(System.String,Kernel.Plugins.Events.IFilter)">
            <summary>
            Elimina el filtro especificado de la lista de filtros registrados. El nombre debe tener el formato {NombrePluginModulo}.{NombreEvento}.
            </summary>
            <param name="fullEventName">Nombre completo del evento. Debe tener el formato {PluginModuleName}.{EventName}</param>
            <param name="filter">Parámetro de tipo <see cref="T:Kernel.Plugins.Events.IFilter"/></param>
        </member>
        <member name="M:Kernel.Core.PluginsManager.DoAction(System.String,System.Object[])">
            <summary>
            Procesa las acciones con el nombre completo y los argumentos proporcionados, dependiendo de la prioridad que éstas tengan, en orden ascendente
            El nombre debe tener el formato {NombrePluginModulo}.{NombreEvento}
            </summary>
            <param name="fullEventName">Nombre completo del evento. Debe tener el formato {PluginModuleName}.{EventName}</param>
            <param name="args">Parámetros utilizados por el evento</param>
        </member>
        <member name="M:Kernel.Core.PluginsManager.DoFilter``1(System.String,System.Object[])">
            <summary>
            Procesa los filtros con el nombre completo y los argumentos proporcionados, dependiendo de la prioridad que éstas tengan, en orden ascendente
            El nombre debe tener el formato {NombrePlugin}.{NombreEvento}. 
            El valor devuelto por DoFilter se envía al siguiente DoFilter para que de ser necesario, cada uno de ellos pueda modificar el resultado y
            cuando se procesen todos los filtros que correspondan a a este nombre, obtener un resultado final. 
            Cada resultado devuelto por DoFilter se serializa para el siguiente DoFilter, si así está configurado el filtro que va a recibir este resultado. 
            Para mayor información consultar <see cref="T:Kernel.Plugins.Events.IFilter"/>
            </summary>
            <param name="fullEventName">Nombre completo del evento. Debe tener el formato {PluginModuleName}.{EventName}</param>
            <param name="args">Parámetros utilizados por el evento</param>
            <returns>Un valor de tipo T</returns>
        </member>
        <member name="M:Kernel.Core.PluginsManager.ProcessCommand(Kernel.Plugins.Events.Command,System.String,System.Object[])">
            <summary>
            Procesa el comando de tipo <see cref="T:Kernel.Plugins.Events.Command"/> solicitado
            </summary>
            <param name="command">Parámetro de tipo PluginCommand</param>
            <param name="pluginName">Nombre del plugin</param>
            <param name="args">Argumentos opcionales para este comando</param>
            <returns></returns>
        </member>
        <member name="M:Kernel.Core.PluginsManager.InstallPlugin(System.String,Kernel.Plugins.Manifest)">
            <summary>
            Instala y activa el plugin con el nombre especificado
            </summary>
            <param name="pluginPath">Ruta del manifiesto o plugin</param>
            <param name="manifest">Parámetro de tipo <see cref="T:Kernel.Plugins.Manifest"/>. Si es null se ignora</param>
            <returns>Nombre del plugin instalado</returns>
        </member>
        <member name="M:Kernel.Core.PluginsManager.UninstallPlugin(System.String)">
            <summary>
            Desinstala el plugin especificado y elimina los recursos físicos y de la memoria
            </summary>
            <param name="pluginName">Nombre del plugin</param>
        </member>
        <member name="M:Kernel.Core.PluginsManager.ReleaseResources">
            <summary>
            Libera los recursos de la memoria
            </summary>
        </member>
        <member name="M:Kernel.Core.PluginsManager.ClearPlugins(System.String,System.Boolean)">
            <summary>
            Elimina los recursos de memoria del plugin especificado
            </summary>
            <param name="pluginName">Nombre del plugin</param>
            <param name="clearLists">true si se eliminan todos los recursos</param>
        </member>
        <member name="M:Kernel.Core.PluginsManager.Dispose(System.Boolean)">
            <summary>
            Dispose(bool disposing) executes in two distinct scenarios.
            If disposing equals true, the method has been called directly
            or indirectly by a user's code. Managed and unmanaged resources
            can be disposed.
            If disposing equals false, the method has been called by the
            runtime from inside the finalizer and you should not reference
            other objects. Only unmanaged resources can be disposed.
            </summary>
        </member>
        <member name="M:Kernel.Core.PluginsManager.Dispose">
            <summary>
            Implement IDisposable.
            Do not make this method virtual.
            A derived class should not be able to override this method.
            </summary>
        </member>
        <member name="T:Kernel.Core.Security.ApplicationUser">
            <summary>
            Clase derivada de <see cref="T:Microsoft.AspNetCore.Identity.IdentityUser"/> para manejo de usuarios
            </summary>
        </member>
        <member name="P:Kernel.Core.Security.ApplicationUser.Usuario">
            <summary>
            Propiedad de tipo <see cref="T:Kernel.Core.Security.NEUser"/>
            </summary>
        </member>
        <member name="M:Kernel.Core.Security.ApplicationUser.#ctor(System.String,Kernel.Core.Security.NEUser)">
            <summary>
            Clase derivada de <see cref="T:Microsoft.AspNetCore.Identity.IdentityUser"/> para manejo de usuarios
            </summary>
            <param name="userName">Nombre del usuario</param>
            <param name="usuario">Parámetro de tipo <see cref="T:Kernel.Core.Security.NEUser"/></param>
        </member>
        <member name="T:Kernel.Core.Security.AuthenticateDbContext">
            <summary>
            Clase de tipo <see cref="T:Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext`1"/>
            </summary>
            <remarks>
            Clase de tipo <see cref="T:Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext`1"/>
            </remarks>
            <param name="options"></param>
        </member>
        <member name="M:Kernel.Core.Security.AuthenticateDbContext.#ctor(Microsoft.EntityFrameworkCore.DbContextOptions{Kernel.Core.Security.AuthenticateDbContext})">
            <summary>
            Clase de tipo <see cref="T:Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext`1"/>
            </summary>
            <remarks>
            Clase de tipo <see cref="T:Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityDbContext`1"/>
            </remarks>
            <param name="options"></param>
        </member>
        <member name="T:Kernel.Core.Security.IAuthorizeHandler">
            <summary>
            Interfaz que indica que la aplicación Web API maneja autorizaciones con JwtBearer
            </summary>
        </member>
        <member name="T:Kernel.Core.Security.JWTConfiguration">
            <summary>
            Clase para la configuración JWT Bearer
            </summary>
        </member>
        <member name="M:Kernel.Core.Security.JWTConfiguration.#ctor(Microsoft.Extensions.Configuration.IConfiguration)">
            <summary>
            Clase para la configuración JWT Bearer
            </summary>
            <param name="configuration"></param>
        </member>
        <member name="M:Kernel.Core.Security.JWTConfiguration.GetValidAudiences">
            <summary>
            Devuelve la lista de audiencias válidas para JWT
            </summary>
            <returns>Lista de audiencias válidas para JWT</returns>
        </member>
        <member name="M:Kernel.Core.Security.JWTConfiguration.GetValidAudience">
            <summary>
            Devuelve un audience válido
            </summary>
            <returns></returns>
        </member>
        <member name="M:Kernel.Core.Security.JWTConfiguration.GetValidIssuers">
            <summary>
            Devuelve la lista de audiencias válidas para JWT
            </summary>
            <returns>Lista de audiencias válidas para JWT</returns>
        </member>
        <member name="M:Kernel.Core.Security.JWTConfiguration.GetValidIssuer">
            <summary>
            Devuelve un issuer válido
            </summary>
            <returns></returns>
        </member>
        <member name="T:Kernel.Core.Security.LoginModel">
            <summary>
            Clase utilizada para el inicio de sesión
            </summary>
        </member>
        <member name="P:Kernel.Core.Security.LoginModel.UserName">
            <summary>
            Nombre del usuario
            </summary>
        </member>
        <member name="P:Kernel.Core.Security.LoginModel.Password">
            <summary>
            Clave del usuario
            </summary>
        </member>
        <member name="P:Kernel.Core.Security.LoginModel.ExpirationMinutes">
            <summary>
            Tiempo en minutos en que debe expirar el token de sesión. 
            Se utiliza cuando se incia la sesión con ser servicio de autenticación Web API
            </summary>
        </member>
        <member name="P:Kernel.Core.Security.LoginModel.Guid">
            <summary>
            Guid de la sesión
            </summary>
        </member>
        <member name="P:Kernel.Core.Security.LoginModel.Expiration">
            <summary>
            Tiempo en que expira el token de sesión
            </summary>
        </member>
        <member name="P:Kernel.Core.Security.LoginModel.CultureName">
            <summary>
            Nombre del idioma a utilizar
            </summary>
        </member>
        <member name="T:Kernel.Core.Security.LoginToken">
            <summary>
            Extiende <see cref="T:Kernel.Core.Security.LoginModel"/>
            </summary>
        </member>
        <member name="P:Kernel.Core.Security.LoginToken.AccessToken">
            <summary>
            Valor del token de sesión
            </summary>
        </member>
        <member name="P:Kernel.Core.Security.LoginToken.RefreshToken">
            <summary>
            Valor del token de refresco para renovar el token de sesión
            </summary>
        </member>
        <member name="P:Kernel.Core.Security.LoginToken.SessionStart">
            <summary>
            Valor de incio de sesión
            </summary>
        </member>
        <member name="P:Kernel.Core.Security.LoginToken.Usuario">
            <summary>
            Propiedad de tipo <see cref="T:Kernel.Core.Security.NEUser"/>
            </summary>
        </member>
        <member name="P:Kernel.Core.Security.LoginToken.Claims">
            <summary>
            Lista de derechos del usuario. <see cref="T:System.Security.Claims.Claim"/>
            </summary>
        </member>
        <member name="T:Kernel.Core.Security.Module">
            <summary>
            Clase para almacenar la lista de módulos a las que el usuario tiene acceso
            </summary>
        </member>
        <member name="M:Kernel.Core.Security.Module.#ctor(System.Int32,System.String)">
            <summary>
            Clase para almacenar la lista de módulos a las que el usuario tiene acceso
            </summary>
        </member>
        <member name="P:Kernel.Core.Security.CUsuarioEx.Operations">
            <summary>
            Lista de operaciones a las que el usuario tiene acceso
            </summary>
        </member>
        <member name="P:Kernel.Core.Security.CUsuarioEx.Modules">
            <summary>
            Lista de módulos de tipo <see cref="T:NE.Seguridad.Servicio.SModulo"/> a las que el usuario tiene acceso
            </summary>
        </member>
        <member name="M:Kernel.Core.Security.CUsuarioEx.FillData">
            <summary>
            Llena las lista de operaciones y módulos a las que el usuario tiene acceso
            </summary>
        </member>
        <member name="T:Kernel.Core.Security.NEUser">
            <summary>
            Extensión de la clase <see cref="T:NE.Seguridad.Servicio.CUsuario"/> para enviar al cliente cuando inicie sesión
            </summary>
        </member>
        <member name="P:Kernel.Core.Security.NEUser.Operations">
            <summary>
            Lista de operaciones a las que el usuario tiene acceso
            </summary>
        </member>
        <member name="P:Kernel.Core.Security.NEUser.Modules">
            <summary>
            Lista de módulos de tipo <see cref="T:NE.Seguridad.Servicio.SModulo"/> a las que el usuario tiene acceso
            </summary>
        </member>
        <member name="M:Kernel.Core.Security.NEUser.FillData(Kernel.Core.Security.CUsuarioEx)">
            <summary>
            Llena las lista de operaciones y módulos a las que el usuario tiene acceso
            </summary>
        </member>
        <member name="T:Kernel.Core.Security.NEUserManager">
            <summary>
            Clase para el manejo de usuarios utilizando NE.Lib
            </summary>
        </member>
        <member name="M:Kernel.Core.Security.NEUserManager.#ctor(Microsoft.Extensions.Configuration.IConfiguration,Microsoft.Extensions.Logging.ILogger{Kernel.Core.Security.NEUserManager},Microsoft.AspNetCore.Http.IHttpContextAccessor)">
            <summary>
            Clase para el manejo de usuarios utilizando NE.Lib
            </summary>
            <param name="configuration">Parámetro de tipo <see cref="T:Microsoft.Extensions.Configuration.IConfiguration"/></param>
            <param name="logger">Parámetro de tipo <see cref="T:Microsoft.Extensions.Logging.ILogger"/></param>
            <param name="contextAccessor"></param>
        </member>
        <member name="M:Kernel.Core.Security.NEUserManager.FindByName(System.String)">
            <summary>
            Busca el usuario con el nombre proporcionado
            </summary>
            <param name="userName">Nombre del usuario</param>
            <returns>Objeto de tipo <see cref="T:Kernel.Core.Security.ApplicationUser"/> si se encontró el usuario, null en caso contrario</returns>
        </member>
        <member name="M:Kernel.Core.Security.NEUserManager.CheckPassword(System.String,System.String)">
            <summary>
            Verifica el usuario y clave utilizando la librería NE.Lib
            </summary>
            <param name="userName">Nombre del usuario</param>
            <param name="password">Clave del usuario</param>
            <returns>Un objeto de tipo <see cref="T:Kernel.Core.Security.ApplicationUser"/> si los datos suministrados son válidos, null en caso contrario</returns>
        </member>
        <member name="M:Kernel.Core.Security.NEUserManager.VerifyUser(System.String)">
            <summary>
            Verifica que el usuario sea válido
            </summary>
            <param name="userName">Nombre del usuario</param>
            <returns>true si es válido, false en caso contrario</returns>
        </member>
        <member name="M:Kernel.Core.Security.NEUserManager.IsAuthorized(System.String,Kernel.WebAPI.WebService)">
            <summary>
            Verifica que el usuario esté autorizado a ejecutar este servicio
            </summary>
            <param name="userName">Nombre del usuario</param>
            <param name="pluginService">Parámetro de tipo <see cref="T:Kernel.WebAPI.WebService"/></param>
            <returns></returns>
        </member>
        <member name="M:Kernel.Core.Security.NEUserManager.Dispose(System.Boolean)">
            <summary>
            Dispose(bool disposing) executes in two distinct scenarios.
            If disposing equals true, the method has been called directly
            or indirectly by a user's code. Managed and unmanaged resources
            can be disposed.
            If disposing equals false, the method has been called by the
            runtime from inside the finalizer and you should not reference
            other objects. Only unmanaged resources can be disposed.
            </summary>
        </member>
        <member name="M:Kernel.Core.Security.NEUserManager.Finalize">
            <summary>
            Destructor de la clase
            </summary>
        </member>
        <member name="M:Kernel.Core.Security.NEUserManager.Dispose">
            <summary>
            Implement IDisposable.
            Do not make this method virtual.
            A derived class should not be able to override this method.
            </summary>
        </member>
        <member name="T:Kernel.Core.Security.NEUserStore">
            <summary>
            Implementación personalizada del almacén de usuarios que extiende <see cref="T:Kernel.Core.Security.UserStore"/>.
            Proporciona operaciones de lectura y escritura sobre los datos del usuario mediante <see cref="T:Kernel.Core.Security.NEUserManager"/>.
            </summary>
        </member>
        <member name="M:Kernel.Core.Security.NEUserStore.#ctor(Kernel.Core.Security.NEUserManager)">
            <summary>
            Inicializa una nueva instancia de <see cref="T:Kernel.Core.Security.NEUserStore"/>.
            </summary>
            <param name="userManager">Administrador de usuarios utilizado para las operaciones de búsqueda</param>
        </member>
        <member name="M:Kernel.Core.Security.NEUserStore.FindByNameAsync(System.String,System.Threading.CancellationToken)">
            <summary>
            Busca un usuario por su nombre normalizado.
            </summary>
            <param name="normalizedUserName">Nombre de usuario normalizado a buscar</param>
            <param name="cancellationToken">Token de cancelación de la operación</param>
            <returns>El usuario encontrado o null si no existe</returns>
        </member>
        <member name="M:Kernel.Core.Security.NEUserStore.GetNormalizedUserNameAsync(Kernel.Core.Security.ApplicationUser,System.Threading.CancellationToken)">
            <summary>
            Obtiene el nombre de usuario normalizado.
            </summary>
            <param name="user">Usuario del cual se obtiene el nombre normalizado</param>
            <param name="cancellationToken">Token de cancelación de la operación</param>
            <returns>El nombre de usuario normalizado</returns>
        </member>
        <member name="M:Kernel.Core.Security.NEUserStore.GetUserIdAsync(Kernel.Core.Security.ApplicationUser,System.Threading.CancellationToken)">
            <summary>
            Obtiene el identificador único del usuario.
            </summary>
            <param name="user">Usuario del cual se obtiene el identificador</param>
            <param name="cancellationToken">Token de cancelación de la operación</param>
            <returns>El identificador del usuario como cadena de texto</returns>
        </member>
        <member name="M:Kernel.Core.Security.NEUserStore.GetUserNameAsync(Kernel.Core.Security.ApplicationUser,System.Threading.CancellationToken)">
            <summary>
            Obtiene el nombre de usuario.
            </summary>
            <param name="user">Usuario del cual se obtiene el nombre</param>
            <param name="cancellationToken">Token de cancelación de la operación</param>
            <returns>El nombre de usuario</returns>
        </member>
        <member name="M:Kernel.Core.Security.NEUserStore.SetNormalizedUserNameAsync(Kernel.Core.Security.ApplicationUser,System.String,System.Threading.CancellationToken)">
            <summary>
            Establece el nombre de usuario normalizado.
            </summary>
            <param name="user">Usuario al cual se le asigna el nombre normalizado</param>
            <param name="normalizedName">Nombre normalizado a asignar</param>
            <param name="cancellationToken">Token de cancelación de la operación</param>
            <returns>Tarea que representa la operación asíncrona</returns>
        </member>
        <member name="M:Kernel.Core.Security.NEUserStore.SetUserNameAsync(Kernel.Core.Security.ApplicationUser,System.String,System.Threading.CancellationToken)">
            <summary>
            Establece el nombre de usuario.
            </summary>
            <param name="user">Usuario al cual se le asigna el nombre</param>
            <param name="userName">Nombre de usuario a asignar</param>
            <param name="cancellationToken">Token de cancelación de la operación</param>
            <returns>Tarea que representa la operación asíncrona</returns>
        </member>
        <member name="T:Kernel.Core.Security.TokensManager">
            <summary>
            Manejo de los tokens creados en el proceso de autenticación
            </summary>
        </member>
        <member name="P:Kernel.Core.Security.TokensManager.Tokens">
            <summary>
            Diccionario que almacena los tokens de sesión
            </summary>
        </member>
        <member name="M:Kernel.Core.Security.TokensManager.#ctor(Microsoft.Extensions.Logging.ILogger{Kernel.Core.Security.TokensManager})">
            <summary>
            Manejo de los tokens creados en el proceso de autenticación
            </summary>
            <param name="logger"></param>
        </member>
        <member name="M:Kernel.Core.Security.TokensManager.FindToken(System.Security.Principal.IIdentity)">
            <summary>
            Busca el token para la <see cref="T:System.Security.Principal.IIdentity"/> proporcionada
            </summary>
            <param name="identity"></param>
            <returns></returns>
        </member>
        <member name="M:Kernel.Core.Security.TokensManager.FindToken(System.Nullable{System.Guid})">
            <summary>
            Busca el token con el guid proporcionado
            </summary>
            <param name="guid"></param>
            <returns></returns>
        </member>
        <member name="M:Kernel.Core.Security.TokensManager.AddToken(Kernel.Core.Security.LoginToken)">
            <summary>
            Adiciona el token <see cref="T:Kernel.Core.Security.LoginToken"/>
            </summary>
            <param name="loginToken"><see cref="T:Kernel.Core.Security.LoginToken"/></param>
            <returns></returns>
        </member>
        <member name="M:Kernel.Core.Security.TokensManager.RemoveToken(System.Security.Principal.IIdentity)">
            <summary>
            Remueve el token con la <see cref="T:System.Security.Principal.IIdentity"/> proporcionada
            </summary>
            <param name="identity"></param>
            <returns></returns>
        </member>
        <member name="M:Kernel.Core.Security.TokensManager.RemoveToken(System.Nullable{System.Guid})">
            <summary>
            Remueve el token con el guid proporcionado
            </summary>
            <param name="guid"></param>
            <returns></returns>
        </member>
        <member name="M:Kernel.Core.Security.TokensManager.ClearTokens">
            <summary>
            Elimina todos los tokens
            </summary>
        </member>
        <member name="M:Kernel.Core.Security.TokensManager.FindGuid(System.Security.Principal.IIdentity)">
            <summary>
            Devuelve el Guid del parámetro
            </summary>
            <param name="identity"><see cref="T:System.Security.Principal.IIdentity"/></param>
            <returns></returns>
        </member>
        <member name="M:Kernel.Core.Security.TokensManager.Finalize">
            <summary>
            Destructor usado por IDisposable
            </summary>
        </member>
        <member name="M:Kernel.Core.Security.TokensManager.Dispose">
            <summary>
            Implement IDisposable.
            Do not make this method virtual.
            A derived class should not be able to override this method.
            </summary>
        </member>
        <member name="T:Kernel.Core.Security.UserStore">
            <summary>
            Clase utilizada para proveer los servicios de <see cref="T:Microsoft.AspNetCore.Identity.IUserStore`1"/>
            </summary>
        </member>
        <member name="M:Kernel.Core.Security.UserStore.Dispose">
            <summary>
            Implementación de <see cref="T:System.IDisposable"/>
            </summary>
        </member>
        <member name="T:Kernel.Core.Startup`1">
            <summary>
            Contiene las funciones básicas del kernel, que incluye la gestión de la seguridad de la aplicación, 
            la gestión de los plugins y la coordinación de las acciones del sistema.
            Implemente la interfaz <see cref="T:Kernel.Core.IKernelApp"/>
            </summary>
            <remarks>
            Constructor
            </remarks>
            <param name="configuration">Parámetro de tipo <see cref="T:Microsoft.Extensions.Configuration.IConfiguration"/></param>
        </member>
        <member name="M:Kernel.Core.Startup`1.#ctor(Microsoft.Extensions.Configuration.IConfiguration)">
            <summary>
            Contiene las funciones básicas del kernel, que incluye la gestión de la seguridad de la aplicación, 
            la gestión de los plugins y la coordinación de las acciones del sistema.
            Implemente la interfaz <see cref="T:Kernel.Core.IKernelApp"/>
            </summary>
            <remarks>
            Constructor
            </remarks>
            <param name="configuration">Parámetro de tipo <see cref="T:Microsoft.Extensions.Configuration.IConfiguration"/></param>
        </member>
        <member name="P:Kernel.Core.Startup`1.Configuration">
            <summary>
            Instancia de tipo <see cref="T:Microsoft.Extensions.Configuration.IConfiguration"/>
            </summary>
        </member>
        <member name="P:Kernel.Core.Startup`1.Logger">
            <summary>
            Instancia de tipo <see cref="T:Microsoft.Extensions.Logging.ILogger`1"/>
            </summary>
        </member>
        <member name="P:Kernel.Core.Startup`1.ApplicationServices">
            <summary>
            Instancia de tipo <see cref="T:System.IServiceProvider"/>
            </summary>
        </member>
        <member name="P:Kernel.Core.Startup`1.KernelAPI">
            <summary>
            Instancia de tipo <see cref="T:Kernel.API.Services"/>
            </summary>
        </member>
        <member name="P:Kernel.Core.Startup`1.ServiceCollection">
            <summary>
            Instancia de tipo <see cref="T:Microsoft.Extensions.DependencyInjection.IServiceCollection"/>
            </summary>
        </member>
        <member name="P:Kernel.Core.Startup`1.PluginsManager">
            <summary>
            Instancia de tipo <see cref="T:Kernel.Core.PluginsManager"/>
            </summary>
        </member>
        <member name="M:Kernel.Core.Startup`1.GetSharedTypesToInclude">
            <summary>
            Devuelve los tipos de clases que se comparten entre plugins para un correcto funcionamiento
            </summary>
            <returns>Lista con los tipos de clases compartidas</returns>
        </member>
        <member name="M:Kernel.Core.Startup`1.StartApplication(Microsoft.AspNetCore.Builder.IApplicationBuilder)">
            <summary>
            Se ejecuta cuando la aplicación está iniciando. Se encarga de:
            * Inicializar la instancia del motor del Kernel Core para la gestión de los plugins utilizando la clase <see cref="T:Kernel.Core.PluginsManager"/>, 
            y la de <see cref="T:Kernel.API.Services"/>.
            * Llamar al método <see cref="M:Kernel.Core.PluginsManager.StartPlugins"/> de <see cref="T:Kernel.Core.PluginsManager"/> para que cargue y active 
            los plugins que se hayan instalado.
            </summary>
        </member>
        <member name="M:Kernel.Core.Startup`1.EndApplication">
            <summary>
            Se ejecuta cuando la aplicación está finalizando. Se carga de informarle a la clase <see cref="T:Kernel.Core.PluginsManager"/> para que se 
            liberen los recursos de la memoria de la siguiente manera:
            * Informa a cada plugin haciendo uso de Dispose del mismo para que libere los recursos solicitados.
            * Libera(descarga) los plugins que hayan sido cargados.
            * Libera los recursos(listas, diccionarios, etc.) que hayan sido creados.
            </summary>
        </member>
        <member name="T:Kernel.ErrorHandler.KernelErrors">
            <summary>
            Número de errores en Kernel
            </summary>
        </member>
        <member name="F:Kernel.ErrorHandler.KernelErrors.None">
            <summary>
            No es error
            </summary>
        </member>
        <member name="F:Kernel.ErrorHandler.KernelErrors.PluginsManagerDoAction">
            <summary>
            Errores de Kernel.Core ejecutando acción
            </summary>
        </member>
        <member name="F:Kernel.ErrorHandler.KernelErrors.PluginsManagerDoFilter">
            <summary>
            Errores de Kernel.Core ejecutando filtro
            </summary>
        </member>
        <member name="F:Kernel.ErrorHandler.KernelErrors.PluginsManagerSavePluginsList">
            <summary>
            Errores de Kernel.Core guardando la lista de configuración de plugins
            </summary>
        </member>
        <member name="F:Kernel.ErrorHandler.KernelErrors.HttpClientServicesGet">
            <summary>
            Errores de Kernel.API en servicio HttpClient Get
            </summary>
        </member>
        <member name="F:Kernel.ErrorHandler.KernelErrors.HttpClientServicesPost">
            <summary>
            Errores de Kernel.API en servicio HttpClient Post
            </summary>
        </member>
        <member name="F:Kernel.ErrorHandler.KernelErrors.HttpClientServicesVerifyLoginToken">
            <summary>
            Errores de Kernel.API en servicio HttpClient verificando el token de inicio de sesión
            </summary>
        </member>
        <member name="F:Kernel.ErrorHandler.KernelErrors.ServicesWepAPICallback">
            <summary>
            Errores de Kernel.API haciendo HttpRequest.Get en servicio HttpClient
            </summary>
        </member>
        <member name="F:Kernel.ErrorHandler.KernelErrors.ServicesFindMenu">
            <summary>
            Errores de Kernel.API buscando menú
            </summary>
        </member>
        <member name="F:Kernel.ErrorHandler.KernelErrors.AddWebService">
            <summary>
            Errores de WebAPI
            </summary>
        </member>
        <member name="F:Kernel.ErrorHandler.KernelErrors.AddMenu">
            <summary>
            Errores de WebApp
            </summary>
        </member>
        <member name="F:Kernel.ErrorHandler.KernelErrors.SpecflowTestsRequestExecute">
            <summary>
            Error en pruebas Specflow
            </summary>
        </member>
        <member name="T:Kernel.ErrorHandler.KernelException">
            <summary>
            Clase para el manejo de errores del kernel
            </summary>
        </member>
        <member name="F:Kernel.ErrorHandler.KernelException.KernelProject">
            <summary>
            Número del proyecto para las excepciones
            </summary>
        </member>
        <member name="P:Kernel.ErrorHandler.KernelException.Module">
            <summary>
            Número del módulo
            </summary>
        </member>
        <member name="P:Kernel.ErrorHandler.KernelException.Error">
            <summary>
            Número de error
            </summary>
        </member>
        <member name="M:Kernel.ErrorHandler.KernelException.#ctor(System.Exception,Kernel.ErrorHandler.KernelModules,Kernel.ErrorHandler.KernelErrors,System.Object[])">
            <summary>
            Clase para el manejo de errores del kernel
            </summary>
            <param name="innerException">Inner exception del error</param>
            <param name="module">Módulo del kernel</param>
            <param name="error">Número de error del kernel</param>
            <param name="parameters">Parámetros utilizados en el mensaje</param>
        </member>
        <member name="M:Kernel.ErrorHandler.KernelException.GetKernelErrorMessage(Kernel.ErrorHandler.KernelErrors,System.Object[])">
            <summary>
            Construye y devuelve un texto con el error especificado, utilizando los valores de los parámetros
            </summary>
            <param name="error">Error a buscar</param>
            <param name="parameters">Parámetros para formatear el texto del error</param>
            <returns>Texto con el error especificado</returns>
        </member>
        <member name="T:Kernel.ErrorHandler.KernelModules">
            <summary>
            Número del módulo
            </summary>
        </member>
        <member name="F:Kernel.ErrorHandler.KernelModules.None">
            <summary>
            No es un módulo válido
            </summary>
        </member>
        <member name="F:Kernel.ErrorHandler.KernelModules.API">
            <summary>
            Errores en Kernel.API
            </summary>
        </member>
        <member name="F:Kernel.ErrorHandler.KernelModules.Core">
            <summary>
            Errores en Kernel.Core
            </summary>
        </member>
        <member name="F:Kernel.ErrorHandler.KernelModules.Plugins">
            <summary>
            Errores en Kernel.Plugins
            </summary>
        </member>
        <member name="F:Kernel.ErrorHandler.KernelModules.WebAPI">
            <summary>
            Errores en Kernel.WebAPI
            </summary>
        </member>
        <member name="F:Kernel.ErrorHandler.KernelModules.WebApp">
            <summary>
            Errores en Kernel.WebApp
            </summary>
        </member>
        <member name="F:Kernel.ErrorHandler.KernelModules.Tests">
            <summary>
            Errores en pruebas
            </summary>
        </member>
        <member name="T:Kernel.Plugins.Attribute">
            <summary>
            Contiene los atributos que implementa el plugin
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Attribute.Name">
            <summary>
            Nombre del atributo
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Attribute.Value">
            <summary>
            Valor del atributo
            </summary>
        </member>
        <member name="M:Kernel.Plugins.Attribute.#ctor(System.String,System.Object)">
            <summary>
            Contiene los atributos que implementa el plugin
            </summary>
            <param name="name">Nombre del atributo</param>
            <param name="value">Valor del atributo</param>
        </member>
        <member name="T:Kernel.Plugins.Events.ActionCallback">
            <summary>
            Callback utilizado por DoAction
            </summary>
            <param name="args">Parámetros utilizados por la acción</param>
            <returns></returns>
        </member>
        <member name="T:Kernel.Plugins.Events.Action">
            <summary>
            Evento de tipo acción <see cref="T:Kernel.Plugins.Events.Event"/>
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Events.Action.ActionCallback">
            <summary>
            Variable cque contiene el valor de método cuando <see cref="M:Kernel.Plugins.Events.Action.DoAction(System.Object[])"/> se invoca
            </summary>
        </member>
        <member name="M:Kernel.Plugins.Events.Action.#ctor(System.String,System.String,Kernel.Plugins.Events.ActionCallback,System.Int32)">
            <summary>
            Evento de tipo acción que implenta la interfaz <see cref="T:Kernel.Plugins.Events.Action"/>
            </summary>
            <param name="pluginModuleName">Si el plugin es de tipo módulo debe ser el mismo nombre del plugin. Cuando es una extensión de un plugin módulo, 
            el nombre del plugin que extiende</param>
            <param name="eventName">Nombre del evento</param>
            <param name="actionCallback">Método a llamar de tipo <see cref="P:Kernel.Plugins.Events.Action.ActionCallback"/> cuando se invoque el evento</param>
            <param name="priority">Prioridad del evento.  10 por defecto</param>
        </member>
        <member name="M:Kernel.Plugins.Events.Action.DoAction(System.Object[])">
            <summary>
            Ejecuta el callback
            </summary>
            <param name="args"></param>
            <returns></returns>
        </member>
        <member name="T:Kernel.Plugins.Events.ActionWebAPIService">
            <summary>
            Provee métodos para utilizar un servicio Web registrado a través de un evento <see cref="T:Kernel.Plugins.Events.Event"/>
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Events.ActionWebAPIService.ModuleService">
            <summary>
            Nombre del módulo, nombre del servicio y permiso Id necesario del servicio Web API
            </summary>
        </member>
        <member name="M:Kernel.Plugins.Events.ActionWebAPIService.#ctor(Kernel.API.Services,Kernel.Plugins.Events.ModuleService,System.String,Kernel.Plugins.Events.ActionCallback,System.Int32)">
            <summary>
            Extensión de la clase <see cref="T:Kernel.Plugins.Events.Action"/>  que provee métodos para utilizar un servicio <see cref="T:System.Net.Http.HttpClient"/> 
            registrado. No se llama directamente sino a través de los servicios de Dependency Injection
            </summary>
            <param name="kernelAPI"><see cref="T:Kernel.API.Services"/></param>
            <param name="moduleService">Parámetro de tipo <see cref="P:Kernel.Plugins.Events.ActionWebAPIService.ModuleService"/> que tiene el nombre del módulo, 
            nombre del servicio y permiso Id necesario del servicio Web API</param>
            <param name="pluginModuleName">Si el plugin es de tipo módulo debe ser el mismo nombre del plugin. Cuando es una extensión de un plugin módulo, 
            el nombre del plugin que extiende</param>
            <param name="actionCallback">Método a llamar de tipo <see cref="T:Kernel.Plugins.Events.ActionCallback"/> cuando se invoque el evento</param>
            <param name="priority">Prioridad del evento</param>
        </member>
        <member name="M:Kernel.Plugins.Events.ActionWebAPIService.#ctor(Kernel.API.Services,Kernel.Plugins.Events.ModuleService,Kernel.Plugins.Events.ActionCallback,Kernel.Plugins.Events.IEvent,System.Int32)">
            <summary>
            Extensión de la clase <see cref="T:Kernel.Plugins.Events.Action"/>  que provee métodos para utilizar un servicio <see cref="T:System.Net.Http.HttpClient"/> 
            registrado. No se llama directamente sino a través de los servicios de Dependency Injection
            </summary>
            <param name="kernelAPI"><see cref="T:Kernel.API.Services"/></param>
            <param name="moduleService">Parámetro de tipo <see cref="P:Kernel.Plugins.Events.ActionWebAPIService.ModuleService"/> que tiene el nombre del módulo, 
            nombre del servicio y permiso Id necesario del servicio Web API</param>
            <param name="actionCallback">Método a llamar de tipo <see cref="T:Kernel.Plugins.Events.ActionCallback"/> cuando se invoque el evento</param>
            <param name="pluginEvent">Parámetro de tipo <see cref="T:Kernel.Plugins.Events.IEvent"/> con la información del evento a utilizar</param>
            <param name="priority">Prioridad del evento</param>
        </member>
        <member name="M:Kernel.Plugins.Events.ActionWebAPIService.DoAction(System.Object[])">
            <summary>
            Ejecuta DoAction utilizando los servicios del Web API
            </summary>
            <param name="args"></param>
            <returns></returns>
        </member>
        <member name="T:Kernel.Plugins.Events.Command">
            <summary>
            Tipos de comandos utilizados por <see cref="T:Kernel.Core.PluginsManager"/>
            </summary>
        </member>
        <member name="F:Kernel.Plugins.Events.Command.Install">
            <summary>
            Instalar un plugin
            </summary>
        </member>
        <member name="F:Kernel.Plugins.Events.Command.Uninstall">
            <summary>
            Desinstalar un plugin
            </summary>
        </member>
        <member name="F:Kernel.Plugins.Events.Command.Activate">
            <summary>
            Activar un plugin
            </summary>
        </member>
        <member name="F:Kernel.Plugins.Events.Command.Deactivate">
            <summary>
            Desactivar un plugin
            </summary>
        </member>
        <member name="T:Kernel.Plugins.Events.Event">
            <summary>
            Clase base para los eventos (acción, filtro, custom)
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Events.Event.PluginModuleName">
            <summary>
            Nombre del plugin principal que crea el evento. Si el plugin es de tipo módulo debe ser el mismo nombre del plugin. 
            Cuando es una extensión de un plugin módulo, el nombre del plugin que extiende
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Events.Event.EventName">
            <summary>
            Nombre del evento
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Events.Event.FullEventName">
            <summary>
            Devuelve el nombre completo del evento en el formato {<see cref="P:Kernel.Plugins.Events.Event.PluginModuleName"/>}.{<see cref="P:Kernel.Plugins.Events.Event.EventName"/>} 
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Events.Event.Priority">
            <summary>
            Prioridad del evento
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Events.Event.EventType">
            <summary>
            Tipo de evento <see cref="P:Kernel.Plugins.Events.Event.EventType"/> (acción o filtro)
            </summary>
        </member>
        <member name="M:Kernel.Plugins.Events.Event.#ctor(System.String,System.String,System.Int32)">
            <summary>
            Clase base para los eventos (acción, filtro, custom)
            </summary>
            <param name="pluginModuleName"></param>
            <param name="eventName"></param>
            <param name="priority"></param>
        </member>
        <member name="T:Kernel.Plugins.Events.EventAttributeBase">
            <summary>
            Contiene la información básica para el manifiesto del un plugin
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Events.EventAttributeBase.FullEventName">
            <summary>
            Nombre completo del evento
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Events.EventAttributeBase.EventType">
            <summary>
            Tipo del evento (acción o filtro)
            </summary>
        </member>
        <member name="M:Kernel.Plugins.Events.EventAttributeBase.#ctor(System.String,Kernel.Plugins.Events.EventType)">
            <summary>
            Contiene la información básica para el manifiesto del un plugin
            </summary>
            <param name="fullEventName">Nombre completo del evento. Debe tener el formato {PluginModuleName}.{EventName}</param>
            <param name="eventType">Tipo de evento.  <see cref="P:Kernel.Plugins.Events.EventAttributeBase.EventType"/></param>
        </member>
        <member name="M:Kernel.Plugins.Events.EventAttributeBase.#ctor">
            <summary>
            Constructor sin parámetros para serialización
            </summary>
        </member>
        <member name="T:Kernel.Plugins.Events.EventAttribute">
            <summary>
            Contiene la información que un plugin debe implementar en su manifiesto
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Events.EventAttribute.Priority">
            <summary>
            Prioridad del evento
            </summary>
        </member>
        <member name="M:Kernel.Plugins.Events.EventAttribute.#ctor">
            <summary>
            Contiene la información que un plugin debe implementar en su manifiesto
            </summary>
        </member>
        <member name="M:Kernel.Plugins.Events.EventAttribute.#ctor(System.String,Kernel.Plugins.Events.EventType,System.Int32)">
            <summary>
            Contiene la información que un plugin debe implementar en su manifiesto
            </summary>
            <param name="fullEventName">Nombre completo del evento. Debe tener el formato {PluginModuleName}.{EventName}</param>
            <param name="eventType">Tipo de evento. <see cref="T:Kernel.Plugins.Events.EventType"/></param>
            <param name="priority">Prioridad del evento</param>
        </member>
        <member name="T:Kernel.Plugins.Events.EventAttributeWebService">
            <summary>
            Clase para la información de los servicios web. <see cref="T:Kernel.WebAPI.WebService"/>
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Events.EventAttributeWebService.Module">
            <summary>
            Nombre del módulo
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Events.EventAttributeWebService.Service">
            <summary>
            Nombre del servicio que provee el plugin
            </summary>
        </member>
        <member name="M:Kernel.Plugins.Events.EventAttributeWebService.#ctor(System.String,System.String,System.String,Kernel.Plugins.Events.EventType)">
            <summary>
            Clase para la información de los servicios web. <see cref="T:Kernel.WebAPI.WebService"/>
            </summary>
            <param name="module">Nombre del módulo</param>
            <param name="service">Nombre del servicio que provee el plugin</param>
            <param name="fullEventName">Nombre completo del evento. Debe tener el formato {PluginModuleName}.{EventName}</param>
            <param name="eventType">Tipo de servicio que se provee (acción o filtro)</param>
        </member>
        <member name="M:Kernel.Plugins.Events.EventAttributeWebService.#ctor">
            <summary>
            Constructor sin parámetros para serialización
            </summary>
        </member>
        <member name="T:Kernel.Plugins.Events.EventAttributeMenu">
            <summary>
            Clase para la información de los menús. <see cref="T:Kernel.WebApp.MenuInfo"/>
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Events.EventAttributeMenu.Text">
            <summary>
            Texto a mostrar en el menú
            </summary>
        </member>
        <member name="M:Kernel.Plugins.Events.EventAttributeMenu.#ctor(System.String,System.String,System.String,Kernel.Plugins.Events.EventType,System.String)">
            <summary>
            
            </summary>
            <param name="module">Nombre del módulo</param>
            <param name="service">Nombre del servicio que provee el plugin</param>
            <param name="fullEventName">Nombre completo del evento. Debe tener el formato {PluginModuleName}.{EventName}</param>
            <param name="eventType">Tipo de servicio que se provee (acción o filtro)</param>
            <param name="text">Texto a mostrar en el menú</param>
        </member>
        <member name="M:Kernel.Plugins.Events.EventAttributeMenu.#ctor">
            <summary>
            Constructor sin parámetros para serialización
            </summary>
        </member>
        <member name="T:Kernel.Plugins.Events.EventAttributeEx">
            <summary>
            Extensión de la clase <see cref="T:Kernel.Plugins.Events.EventAttribute"/>
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Events.EventAttributeEx.PluginPath">
            <summary>
            PluginPath del plugin
            </summary>
        </member>
        <member name="M:Kernel.Plugins.Events.EventAttributeEx.#ctor">
            <summary>
            Extensión de la clase <see cref="T:Kernel.Plugins.Events.EventAttribute"/>
            </summary>
        </member>
        <member name="M:Kernel.Plugins.Events.EventAttributeEx.#ctor(System.String,Kernel.Plugins.Events.EventType,System.Int32)">
            <summary>
            Extensión de la clase <see cref="T:Kernel.Plugins.Events.EventAttribute"/>
            </summary>
            <param name="fullEventName">Nombre completo del evento. Debe tener el formato {PluginModuleName}.{EventName}</param>
            <param name="eventType">Tipo de evento.  <see cref="T:Kernel.Plugins.Events.EventType"/></param>
            <param name="priority">Prioridad del evento</param>
        </member>
        <member name="T:Kernel.Plugins.Events.EventExtensions">
            <summary>
            Clase para manejo de extensiones en eventos <see cref="T:Kernel.Plugins.Events.Action"/> y <see cref="T:Kernel.Plugins.Events.Filter`1"/>/>
            </summary>
        </member>
        <member name="M:Kernel.Plugins.Events.EventExtensions.CreateAction(Kernel.Plugins.IPluginModule,System.String,Kernel.Plugins.Events.ActionCallback,System.Int32)">
            <summary>
            Crea un objeto de tipo <see cref="T:Kernel.Plugins.Events.Filter`1"/> para un plugin. utilizando la propiedad <see cref="P:Kernel.Plugins.IPluginModule.PluginName"/> 
            si el plugin es de tipo módulo, o la propiedad <see cref="P:Kernel.Plugins.IPluginExtension.PluginModuleName"/> si el plugin es de tipo 
            extensión.
            </summary>
            <param name="pluginModule">Parámetro de tipo <see cref="T:Kernel.Plugins.IPluginModule"/></param>
            <param name="eventName">Nombre del evento</param>
            <param name="actionCallback">Método a llamar de tipo <see cref="T:Kernel.Plugins.Events.ActionCallback"/> cuando se invoque el evento</param>
            <param name="priority">Prioridad del evento.  10 por defecto</param>
            <returns>Objeto de tipo <see cref="T:Kernel.Plugins.Events.Action"/></returns>
        </member>
        <member name="M:Kernel.Plugins.Events.EventExtensions.CreateFilter``1(Kernel.Plugins.IPluginModule,System.String,Kernel.Plugins.Events.FilterCallback{``0},System.Int32,System.Boolean)">
            <summary>
            Crea un objeto de tipo <see cref="T:Kernel.Plugins.Events.Filter`1"/> para un plugin. utilizando la propiedad <see cref="P:Kernel.Plugins.IPluginModule.PluginName"/> 
            si el plugin es de tipo módulo, o la propiedad <see cref="P:Kernel.Plugins.IPluginExtension.PluginModuleName"/> si el plugin es de tipo 
            extensión.
            </summary>
            <typeparam name="T">Tipo de dato que el filtro deberá devolver en sus resultados</typeparam>
            <param name="pluginModule">Parámetro de tipo <see cref="T:Kernel.Plugins.IPluginModule"/></param>
            <param name="eventName">Nombre del evento</param>
            <param name="filterCallback">Método a llamar de tipo <see cref="T:Kernel.Plugins.Events.FilterCallback`1"/> cuando se invoque el evento</param>
            <param name="priority">Prioridad del evento.  10 por defecto</param>
            <param name="serializeResult">true si se debe serializar el resultado devuelto por <see cref="M:Kernel.Plugins.Events.Filter`1.DoFilter(System.Object[])"/></param>
            <returns>Objeto de tipo <see cref="T:Kernel.Plugins.Events.Filter`1"/></returns>
        </member>
        <member name="M:Kernel.Plugins.Events.EventExtensions.CreatePluginModuleFilter``1(Kernel.Plugins.IPluginModule,System.String,Kernel.Plugins.Events.FilterCallback{``0},System.Int32,System.Boolean)">
            <summary>
            Mantiene compatibilidad binaria con plugins compilados contra versiones anteriores del Kernel.
            Delega a <see cref="M:Kernel.Plugins.Events.EventExtensions.CreateFilter``1(Kernel.Plugins.IPluginModule,System.String,Kernel.Plugins.Events.FilterCallback{``0},System.Int32,System.Boolean)"/>.
            </summary>
        </member>
        <member name="M:Kernel.Plugins.Events.EventExtensions.CreateWebService(Kernel.Plugins.IPluginModule,System.String,System.String,System.Int32,System.String)">
            <summary>
            Crea un objeto de tipo <see cref="T:Kernel.WebAPI.WebService"/> para un plugin si el plugin está instalado en una aplicación Web API.
            </summary>
            <param name="pluginModule">Parámetro de tipo <see cref="T:Kernel.Plugins.IPluginModule"/></param>
            <param name="module">Nombre del módulo</param>
            <param name="service">Nombre del servicio que provee el plugin</param>
            <param name="permissionId">Id del permiso</param>
            <param name="eventName">Nombre del evento</param>
            <returns>Objeto de tipo <see cref="T:Kernel.WebAPI.WebService"/></returns>
        </member>
        <member name="M:Kernel.Plugins.Events.EventExtensions.CreateWebService(Kernel.Plugins.IPluginModule,Kernel.Plugins.Events.ModuleService)">
            <summary>
            Crea un objeto de tipo <see cref="T:Kernel.WebAPI.WebService"/> para un plugin si el plugin está instalado en una aplicación Web API.
            </summary>
            <param name="pluginModule">Parámetro de tipo <see cref="T:Kernel.Plugins.IPluginModule"/></param>
            <param name="moduleService">Parámetro de tipo <see cref="T:Kernel.Plugins.Events.ModuleService"/> que tiene el nombre del módulo, 
            nombre del servicio y permiso Id necesario del servicio Web API</param>
            <returns>Objeto de tipo <see cref="T:Kernel.WebAPI.WebService"/></returns>
        </member>
        <member name="M:Kernel.Plugins.Events.EventExtensions.CreateActionAndWebService(Kernel.Plugins.IPluginModule,Kernel.Plugins.Events.ModuleService,Kernel.Plugins.Events.ActionCallback,System.Int32)">
            <summary>
            Crea un objeto de tipo <see cref="T:Kernel.WebAPI.WebService"/> para un plugin si el plugin está instalado en una aplicación Web API, y la acción asociada al mismo.
            </summary>
            <param name="pluginModule">Parámetro de tipo <see cref="T:Kernel.Plugins.IPluginModule"/></param>
            <param name="moduleService">Parámetro de tipo <see cref="T:Kernel.Plugins.Events.ModuleService"/> que tiene el nombre del módulo, 
            nombre del servicio y permiso Id necesario del servicio Web API</param>
            <param name="actionCallback">Método a llamar de tipo <see cref="T:Kernel.Plugins.Events.ActionCallback"/> cuando se invoque el evento</param>
            <param name="priority">Prioridad del evento.  10 por defecto</param>
            <returns>Objeto de tipo <see cref="T:Kernel.WebAPI.WebService"/></returns>
        </member>
        <member name="M:Kernel.Plugins.Events.EventExtensions.CreateWebServiceFilter``1(Kernel.Plugins.IPluginModule,System.String,Kernel.Plugins.Events.FilterCallback{``0},System.Int32,System.Int32,System.Boolean)">
            <summary>
            Crea un objeto de tipo <see cref="T:Kernel.WebAPI.WebService"/> para un plugin si el plugin está instalado en una aplicación Web API, y el filtro asociado al mismo.
            </summary>
            <param name="pluginModule">Parámetro de tipo <see cref="T:Kernel.Plugins.IPluginModule"/></param>
            <param name="service">Nombre del servicio</param>
            <param name="filterCallback">Método a llamar de tipo <see cref="T:Kernel.Plugins.Events.FilterCallback`1"/> cuando se invoque el evento</param>
            <param name="permissionId">Id del permiso para consultar si el usuario tiene acceso al mismo</param>
            <param name="priority">Prioridad del evento.  10 por defecto</param>
            <param name="serializeResult">true si se debe serializar el resultado devuelto por <see cref="M:Kernel.Plugins.Events.Filter`1.DoFilter(System.Object[])"/></param>
            <returns>Objeto de tipo <see cref="T:Kernel.WebAPI.WebService"/></returns>
        </member>
        <member name="M:Kernel.Plugins.Events.EventExtensions.CreateFilterAndWebService``1(Kernel.Plugins.IPluginModule,System.String,Kernel.Plugins.Events.FilterCallback{``0},System.Int32,System.Int32,System.Boolean)">
            <summary>
            Crea un objeto de tipo <see cref="T:Kernel.WebAPI.WebService"/> para un plugin si el plugin está instalado en una aplicación Web API, y el filtro asociado al mismo.
            </summary>
            <param name="pluginModule">Parámetro de tipo <see cref="T:Kernel.Plugins.IPluginModule"/></param>
            <param name="service">Nombre del servicio</param>
            <param name="filterCallback">Método a llamar de tipo <see cref="T:Kernel.Plugins.Events.FilterCallback`1"/> cuando se invoque el evento</param>
            <param name="permissionId">Id del permiso para consultar si el usuario tiene acceso al mismo</param>
            <param name="priority">Prioridad del evento.  10 por defecto</param>
            <param name="serializeResult">true si se debe serializar el resultado devuelto por <see cref="M:Kernel.Plugins.Events.Filter`1.DoFilter(System.Object[])"/></param>
            <returns>Objeto de tipo <see cref="T:Kernel.WebAPI.WebService"/></returns>
        </member>
        <member name="M:Kernel.Plugins.Events.EventExtensions.CreateFilterAndWebService``1(Kernel.Plugins.IPluginModule,Kernel.Plugins.Events.ModuleService,Kernel.Plugins.Events.FilterCallback{``0},System.Int32,System.Boolean)">
            <summary>
            Crea un objeto de tipo <see cref="T:Kernel.WebAPI.WebService"/> para un plugin si el plugin está instalado en una aplicación Web API, y el filtro asociado al mismo.
            </summary>
            <param name="pluginModule">Parámetro de tipo <see cref="T:Kernel.Plugins.IPluginModule"/></param>
            <param name="moduleService">Parámetro de tipo <see cref="T:Kernel.Plugins.Events.ModuleService"/> que tiene el nombre del módulo, 
            nombre del servicio y permiso Id necesario del servicio Web API</param>
            <param name="filterCallback">Método a llamar de tipo <see cref="T:Kernel.Plugins.Events.FilterCallback`1"/> cuando se invoque el evento</param>
            <param name="priority">Prioridad del evento.  10 por defecto</param>
            <param name="serializeResult">true si se debe serializar el resultado devuelto por <see cref="M:Kernel.Plugins.Events.Filter`1.DoFilter(System.Object[])"/></param>
            <returns>Objeto de tipo <see cref="T:Kernel.WebAPI.WebService"/></returns>
        </member>
        <member name="M:Kernel.Plugins.Events.EventExtensions.CreateActionWebAPIService(Kernel.Plugins.IPluginModule,System.String,System.String,System.Int32,System.String,Kernel.Plugins.Events.ActionCallback,System.Int32)">
            <summary>
            Crea un objeto de tipo <see cref="T:Kernel.Plugins.Events.ActionWebAPIService"/> para un plugin si el plugin está instalado en una aplicación Web.
            </summary>
            <param name="pluginModule">Parámetro de tipo <see cref="T:Kernel.Plugins.IPluginModule"/></param>
            <param name="module">Nombre y Id del módulo</param>
            <param name="service">Nombre y Id del servicio que provee el plugin</param>
            <param name="permissionId">Id del permiso</param>
            <param name="eventName">Nombre del evento</param>
            <param name="actionCallback">Método a llamar de tipo <see cref="T:Kernel.Plugins.Events.ActionCallback"/> cuando se invoque el evento</param>
            <param name="priority">Prioridad del evento.  10 por defecto</param>
            <returns>Objeto de tipo <see cref="T:Kernel.Plugins.Events.ActionWebAPIService"/></returns>
        </member>
        <member name="M:Kernel.Plugins.Events.EventExtensions.CreateActionWebAPIService(Kernel.Plugins.IPluginModule,Kernel.Plugins.Events.ModuleService,Kernel.Plugins.Events.ActionCallback,System.Int32)">
            <summary>
            Crea un objeto de tipo <see cref="T:Kernel.Plugins.Events.ActionWebAPIService"/> para un plugin si el plugin está instalado en una aplicación Web.
            </summary>
            <param name="pluginModule">Parámetro de tipo <see cref="T:Kernel.Plugins.IPluginModule"/></param>
            <param name="moduleService">Parámetro de tipo <see cref="T:Kernel.Plugins.Events.ModuleService"/> que tiene el nombre del módulo, 
            nombre del servicio y permiso Id necesario del servicio Web API</param>
            <param name="actionCallback">Método a llamar de tipo <see cref="T:Kernel.Plugins.Events.ActionCallback"/> cuando se invoque el evento</param>
            <param name="priority">Prioridad del evento.  10 por defecto</param>
            <returns>Objeto de tipo <see cref="T:Kernel.Plugins.Events.ActionWebAPIService"/></returns>
        </member>
        <member name="M:Kernel.Plugins.Events.EventExtensions.CreateFilterWebAPIService``1(Kernel.Plugins.IPluginModule,System.String,System.String,System.Int32,System.String,Kernel.Plugins.Events.FilterCallback{``0},System.Int32,System.Boolean)">
            <summary>
            Crea un objeto de tipo <see cref="T:Kernel.Plugins.Events.FilterWebAPIService`1"/> para un plugin si el plugin está instalado en una aplicación Web.
            </summary>
            <typeparam name="T">Tipo de dato que el filtro deberá devolver en sus resultados</typeparam>
            <param name="pluginModule">Parámetro de tipo <see cref="T:Kernel.Plugins.IPluginModule"/></param>
            <param name="module">Nombre y Id del módulo</param>
            <param name="service">Nombre y Id del servicio que provee el plugin</param>
            <param name="permissionId"></param>
            <param name="eventName">Nombre del evento</param>
            <param name="filterCallback">Método a llamar de tipo <see cref="T:Kernel.Plugins.Events.FilterCallback`1"/> cuando se invoque el evento</param>
            <param name="priority">Prioridad del evento.  10 por defecto</param>
            <param name="serializeResult">true si se debe serializar el resultado devuelto por <see cref="M:Kernel.Plugins.Events.Filter`1.DoFilter(System.Object[])"/></param>
            <returns>Objeto de tipo <see cref="T:Kernel.Plugins.Events.FilterWebAPIService`1"/></returns>
        </member>
        <member name="M:Kernel.Plugins.Events.EventExtensions.CreateFilterWebAPIService``1(Kernel.Plugins.IPluginModule,Kernel.Plugins.Events.ModuleService,Kernel.Plugins.Events.FilterCallback{``0},System.Int32,System.Boolean)">
            <summary>
            Crea un objeto de tipo <see cref="T:Kernel.Plugins.Events.FilterWebAPIService`1"/> para un plugin si el plugin está instalado en una aplicación Web.
            </summary>
            <typeparam name="T">Tipo de dato que el filtro deberá devolver en sus resultados</typeparam>
            <param name="pluginModule">Parámetro de tipo <see cref="T:Kernel.Plugins.IPluginModule"/></param>
            <param name="moduleService">Parámetro de tipo <see cref="T:Kernel.Plugins.Events.ModuleService"/> que tiene el nombre del módulo, 
            nombre del servicio y permiso Id necesario del servicio Web API</param>
            <param name="filterCallback">Método a llamar de tipo <see cref="T:Kernel.Plugins.Events.FilterCallback`1"/> cuando se invoque el evento</param>
            <param name="priority">Prioridad del evento.  10 por defecto</param>
            <param name="serializeResult">true si se debe serializar el resultado devuelto por <see cref="M:Kernel.Plugins.Events.Filter`1.DoFilter(System.Object[])"/></param>
            <returns>Objeto de tipo <see cref="T:Kernel.Plugins.Events.FilterWebAPIService`1"/></returns>
        </member>
        <member name="M:Kernel.Plugins.Events.EventExtensions.CreateMenuInfo(Kernel.Plugins.IPluginModule,System.String,System.String,System.Int32,System.String,System.String,System.Double,System.String)">
            <summary>
            Crea un objeto de tipo <see cref="T:Kernel.WebApp.MenuInfo"/> para un plugin si el plugin está instalado en una aplicación Web.
            </summary>
            <param name="pluginModule">Parámetro de tipo <see cref="T:Kernel.Plugins.IPluginModule"/></param>
            <param name="module">Nombre y Id del módulo</param>
            <param name="service">Nombre y Id del servicio que provee el plugin</param>
            <param name="permissionId">Id del permiso</param>
            <param name="eventName">Nombre del evento</param>
            <param name="text">Texto a mostrar el menú</param>
            <param name="position">Posición del menú en la lista</param>
            <param name="classInfo">Información de la clase que se utiliza en el menú de tipo <see cref="P:Kernel.WebApp.MenuInfo.ClassInfo"/></param>
            <returns>Objeto de tipo <see cref="T:Kernel.WebApp.MenuInfo"/></returns>
        </member>
        <member name="M:Kernel.Plugins.Events.EventExtensions.CreateMenuInfo(Kernel.Plugins.IPluginModule,Kernel.Plugins.Events.ModuleService,System.String,System.Double,System.String)">
            <summary>
            Crea un objeto de tipo <see cref="T:Kernel.WebApp.MenuInfo"/> para un plugin si el plugin está instalado en una aplicación Web.
            </summary>
            <param name="pluginModule">Parámetro de tipo <see cref="T:Kernel.Plugins.IPluginModule"/></param>
            <param name="moduleService">Parámetro de tipo <see cref="T:Kernel.Plugins.Events.ModuleService"/> que tiene el nombre del módulo, 
            nombre del servicio y permiso Id necesario del servicio Web API</param>
            <param name="text">Texto a mostrar el menú</param>
            <param name="position">Posición del menú en la lista</param>
            <param name="classInfo">Información de la clase que se utiliza en el menú de tipo <see cref="P:Kernel.WebApp.MenuInfo.ClassInfo"/></param>
            <returns>Objeto de tipo <see cref="T:Kernel.WebApp.MenuInfo"/></returns>
        </member>
        <member name="T:Kernel.Plugins.Events.EventType">
            <summary>
            Tipo de evento para los plugins (acción, filtro)
            </summary>
        </member>
        <member name="F:Kernel.Plugins.Events.EventType.Action">
            <summary>
            Evento tipo acción
            </summary>
        </member>
        <member name="F:Kernel.Plugins.Events.EventType.Filter">
            <summary>
            Evento tipo filtro
            </summary>
        </member>
        <member name="T:Kernel.Plugins.Events.EventTypeConverter">
            <summary>
            Convierte un valor de tipo <see cref="T:Kernel.Plugins.Events.EventType"/> a string y viceversa.
            Se utiliza en la serialización de clases que tengan una propiedad de tipo <see cref="T:Kernel.Plugins.Events.EventType"/>
            Para mayor información consultar <see cref="T:System.Text.Json.Serialization.JsonConverter`1"/>
            </summary>
        </member>
        <member name="M:Kernel.Plugins.Events.EventTypeConverter.Read(System.Text.Json.Utf8JsonReader@,System.Type,System.Text.Json.JsonSerializerOptions)">
            <summary>
            Convierte un string a un valor de tipo <see cref="T:Kernel.Plugins.Events.EventType"/>
            </summary>
            <param name="reader">The reader.</param>
            <param name="typeToConvert">The type to convert.</param>
            <param name="options">An object that specifies serialization options to use.</param>
            <returns>Objeto de tipo <see cref="T:Kernel.Plugins.Events.EventType"/></returns>
        </member>
        <member name="M:Kernel.Plugins.Events.EventTypeConverter.ConvertString(System.Text.Json.Utf8JsonReader)">
            <summary>
            Convierte un valor de tipo <see cref="T:Kernel.Plugins.Events.EventType"/> a string 
            </summary>
            <param name="reader"></param>
            <returns></returns>
        </member>
        <member name="M:Kernel.Plugins.Events.EventTypeConverter.Write(System.Text.Json.Utf8JsonWriter,Kernel.Plugins.Events.EventType,System.Text.Json.JsonSerializerOptions)">
            <summary>
            Escribe un valor de tipo <see cref="T:Kernel.Plugins.Events.EventType"/> para serializarlo
            Para mayor información consultar <see cref="T:System.Text.Json.Serialization.JsonConverter`1"/>
            </summary>
            <param name="writer"></param>
            <param name="pluginRequestType"></param>
            <param name="options"></param>
        </member>
        <member name="T:Kernel.Plugins.Events.Filter`1">
            <summary>
            Implementación de la interfaz <see cref="T:Kernel.Plugins.Events.IFilter"/>
            </summary>
            <typeparam name="T">Tipo de dato que el filtro deberá devolver en sus resultados</typeparam>
            <remarks>
            Implementación de la interfaz <see cref="T:Kernel.Plugins.Events.IFilter"/>
            </remarks>
            <param name="pluginModuleName">Si el plugin es de tipo módulo debe ser el mismo nombre del plugin. Cuando es una extensión de un plugin módulo, 
            el nombre del plugin que extiende</param>
            <param name="eventName">Nombre del evento</param>
            <param name="filterCallback">Método a llamar de tipo <see cref="T:Kernel.Plugins.Events.FilterCallback`1"/> cuando se invoque el evento</param>
            <param name="priority">Prioridad del evento.  10 por defecto</param>
            <param name="serializeResult">true si se debe serializar el resultado devuelto por <see cref="M:Kernel.Plugins.Events.Filter`1.DoFilter(System.Object[])"/></param>
        </member>
        <member name="M:Kernel.Plugins.Events.Filter`1.#ctor(System.String,System.String,Kernel.Plugins.Events.FilterCallback{`0},System.Int32,System.Boolean)">
            <summary>
            Implementación de la interfaz <see cref="T:Kernel.Plugins.Events.IFilter"/>
            </summary>
            <typeparam name="T">Tipo de dato que el filtro deberá devolver en sus resultados</typeparam>
            <remarks>
            Implementación de la interfaz <see cref="T:Kernel.Plugins.Events.IFilter"/>
            </remarks>
            <param name="pluginModuleName">Si el plugin es de tipo módulo debe ser el mismo nombre del plugin. Cuando es una extensión de un plugin módulo, 
            el nombre del plugin que extiende</param>
            <param name="eventName">Nombre del evento</param>
            <param name="filterCallback">Método a llamar de tipo <see cref="T:Kernel.Plugins.Events.FilterCallback`1"/> cuando se invoque el evento</param>
            <param name="priority">Prioridad del evento.  10 por defecto</param>
            <param name="serializeResult">true si se debe serializar el resultado devuelto por <see cref="M:Kernel.Plugins.Events.Filter`1.DoFilter(System.Object[])"/></param>
        </member>
        <member name="P:Kernel.Plugins.Events.Filter`1.SerializeResult">
            <summary>
            true si el resultado se debe serializar para ser procesado por el siguiente filtro en la lista de
            filtros configurados, dependiendo de la prioridad que tenga
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Events.Filter`1.FilterCallback">
            <summary>
            Variable de tipo <see cref="T:Kernel.Plugins.Events.FilterCallback`1"/> que guarda el valor del método a llamar cuando sea invocado
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Events.Filter`1.TokenGuid">
            <summary>
            Usado internamente para el token de sesión
            </summary>
        </member>
        <member name="M:Kernel.Plugins.Events.Filter`1.DoFilter(System.Object[])">
            <summary>
            Método a llamar cuando se ejecuta el evento
            </summary>
            <param name="args">parámetros utilizados por el método</param>
            <returns>Resultado de tipo objeto</returns>
        </member>
        <member name="T:Kernel.Plugins.Events.FilterWebAPIService`1">
            <summary>
            Extensión de la clase <see cref="T:Kernel.Plugins.Events.Filter`1"/> que provee servicios Web API
            </summary>
            <typeparam name="T"></typeparam>
        </member>
        <member name="P:Kernel.Plugins.Events.FilterWebAPIService`1.ModuleService">
            <summary>
            Nombre del módulo, nombre del servicio y permiso Id necesario del servicio Web API
            </summary>
        </member>
        <member name="M:Kernel.Plugins.Events.FilterWebAPIService`1.#ctor(Kernel.API.Services,Kernel.Plugins.Events.ModuleService,System.String,Kernel.Plugins.Events.FilterCallback{`0},System.Int32,System.Boolean)">
            <summary>
            Extensión de la clase <see cref="T:Kernel.Plugins.Events.Filter`1"/> que provee servicios Web API
            </summary>
            <param name="kernelAPI"><see cref="T:Kernel.API.Services"/></param>
            <param name="moduleService">Parámetro de tipo <see cref="P:Kernel.Plugins.Events.FilterWebAPIService`1.ModuleService"/> que tiene el nombre del módulo, 
            nombre del servicio y permiso Id necesario del servicio Web API</param>
            <param name="pluginModuleName">Si el plugin es de tipo módulo debe ser el mismo nombre del plugin. Cuando es una extensión de un plugin módulo, 
            el nombre del plugin que extiende</param>
            <param name="filterCallback">Método a llamar de tipo <see cref="T:Kernel.Plugins.Events.FilterCallback`1"/> cuando se invoque el evento</param>
            <param name="priority">Prioridad del evento</param>
            <param name="serialize">true si el resultado se debe serializar</param>
        </member>
        <member name="M:Kernel.Plugins.Events.FilterWebAPIService`1.#ctor(Kernel.API.Services,Kernel.Plugins.Events.ModuleService,Kernel.Plugins.Events.FilterCallback{`0},Kernel.Plugins.Events.IEvent,System.Int32,System.Boolean)">
            <summary>
            Extensión de la clase <see cref="T:Kernel.Plugins.Events.Filter`1"/> que provee servicios Web API
            </summary>
            <param name="kernelAPI"><see cref="T:Kernel.API.Services"/></param>
            <param name="moduleService">Parámetro de tipo <see cref="P:Kernel.Plugins.Events.FilterWebAPIService`1.ModuleService"/> que tiene el nombre del módulo, 
            nombre del servicio y permiso Id necesario del servicio Web API</param>
            <param name="filterCallback">Método a llamar de tipo <see cref="T:Kernel.Plugins.Events.FilterCallback`1"/> cuando se invoque el evento</param>
            <param name="pluginEvent">Parámetro de tipo <see cref="T:Kernel.Plugins.Events.IEvent"/> con la información del evento a utilizar</param>
            <param name="priority">Prioridad del evento</param>
            <param name="serializeResult">true si el resultado debe ser serializado</param>
        </member>
        <member name="M:Kernel.Plugins.Events.FilterWebAPIService`1.InvokeFilter(System.Object[])">
            <summary>
            Se encarga de llamar al servicio Web API cuando se ejecuta <see cref="M:Kernel.Plugins.Events.IFilter.DoFilter(System.Object[])"/>
            </summary>
            <param name="args">Parámetros utilizados por el servicio Web API</param>
            <returns></returns>
        </member>
        <member name="M:Kernel.Plugins.Events.FilterWebAPIService`1.DoFilter(System.Object[])">
            <summary>
            Método a llamar cuando se ejecuta el evento
            </summary>
            <param name="args">parámetros utilizados por el método</param>
            <returns>Resultado de tipo objeto</returns>
        </member>
        <member name="T:Kernel.Plugins.Events.IEvent">
            <summary>
            Interfaz base para los eventos (acción, filtro, custom)
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Events.IEvent.PluginModuleName">
            <summary>
            Nombre del plugin principal que crea el evento. Si el plugin es de tipo módulo debe ser el mismo nombre del plugin. 
            Cuando es una extensión de un plugin módulo, el nombre del plugin que extiende
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Events.IEvent.EventName">
            <summary>
            Nombre del evento
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Events.IEvent.FullEventName">
            <summary>
            Devuelve el nombre completo del evento en el formato {<see cref="P:Kernel.Plugins.Events.IEvent.PluginModuleName"/>}.{<see cref="P:Kernel.Plugins.Events.IEvent.EventName"/>} 
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Events.IEvent.Priority">
            <summary>
            Prioridad del evento
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Events.IEvent.EventType">
            <summary>
            Tipo de evento <see cref="P:Kernel.Plugins.Events.IEvent.EventType"/> (acción o filtro)
            </summary>
        </member>
        <member name="T:Kernel.Plugins.Events.IEventWebAPIService">
            <summary>
            Provee métodos para utilizar un servicio Web registrado a través de un evento <see cref="T:Kernel.Plugins.Events.IEvent"/>
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Events.IEventWebAPIService.ModuleService">
            <summary>
            Nombre del módulo, nombre del servicio y permiso Id necesario del servicio Web API
            </summary>
        </member>
        <member name="T:Kernel.Plugins.Events.FilterCallback`1">
            <summary>
            Callback utlizado por DoFilter
            </summary>
            <typeparam name="T">Tipo de objeto que el filtro debe retornar</typeparam>
            <param name="args">Parámetros utilizados por el filtro</param>
            <returns>Un objeto de tipo T que ha sido procesado por el filtro</returns>
        </member>
        <member name="T:Kernel.Plugins.Events.IFilter">
            <summary>
            Evento de tipo filtro derivado de <see cref="T:Kernel.Plugins.Events.IEvent"/>
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Events.IFilter.TokenGuid">
            <summary>
            Usado internamente para el token de sesión
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Events.IFilter.SerializeResult">
            <summary>
            true si el resultado se debe serializar para ser procesado por el siguiente filtro en la lista de
            filtros configurados, dependiendo de la prioridad que tenga
            </summary>
        </member>
        <member name="M:Kernel.Plugins.Events.IFilter.DoFilter(System.Object[])">
            <summary>
            Método a llamar cuando se ejecuta el evento
            </summary>
            <param name="args">parámetros utilizados por el método</param>
            <returns>Resultado de tipo objeto</returns>
        </member>
        <member name="T:Kernel.Plugins.Events.ModuleService">
            <summary>
            Clase para almacenar el nombre del módulo, del servicio, Id del permiso para consultar si el usuario tiene acceso al mismo y
            el nombre del evento asociado al módulo/servicio
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Events.ModuleService.Module">
            <summary>
            Nombre del módulo
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Events.ModuleService.Service">
            <summary>
            Nombre del servicio
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Events.ModuleService.PermissionId">
            <summary>
            Id del permiso para consultar si el usuario tiene acceso al mismo
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Events.ModuleService.EventName">
            <summary>
            Nombre del evento
            </summary>
        </member>
        <member name="M:Kernel.Plugins.Events.ModuleService.#ctor(System.String,System.String,System.Int32,System.String)">
            <summary>
            Clase para almacenar el nombre del módulo, del servicio, Id del permiso para consultar si el usuario tiene acceso al mismo y
            el nombre del evento asociado al módulo/servicio
            </summary>
            <param name="module">Nombre del módulo</param>
            <param name="service">Nombre del servicio</param>
            <param name="permissionId">Id del permiso para consultar si el usuario tiene acceso al mismo</param>
            <param name="eventName">Nombre del evento</param>
        </member>
        <member name="M:Kernel.Plugins.Events.ModuleService.#ctor(System.String,System.String,System.Int32)">
            <summary>
            Clase para almacenar el nombre del módulo, del servicio, Id del permiso para consultar si el usuario tiene acceso al mismo y
            el nombre del evento asociado al módulo/servicio
            </summary>
            <param name="module">Nombre del módulo</param>
            <param name="service">Nombre del servicio</param>
            <param name="permissionId">Id del permiso para consultar si el usuario tiene acceso al mismo</param>
        </member>
        <member name="M:Kernel.Plugins.Events.ModuleService.Create``2(System.Linq.Expressions.Expression{System.Func{``0}},System.Linq.Expressions.Expression{System.Func{``1}},System.String)">
            <summary>
            Crea un objeto de tipo <see cref="T:Kernel.Plugins.Events.ModuleService"/> utilizando los parámetros <paramref name="moduleExpression"/>
            y <paramref name="serviceExpression"/>
            </summary>
            <typeparam name="TModule">Tipo de dato del parámetro <paramref name="moduleExpression"/></typeparam>
            <typeparam name="TService">Tipo de dato del parámetro <paramref name="serviceExpression"/></typeparam>
            <param name="moduleExpression"></param>
            <param name="serviceExpression"></param>
            <param name="eventName">Nombre del evento</param>
            <returns>Objeto de tipo <see cref="T:Kernel.Plugins.Events.ModuleService"/></returns>
        </member>
        <member name="M:Kernel.Plugins.Events.ModuleService.ToString">
            <summary>
            Devuelve los valores de las propiedades <see cref="P:Kernel.Plugins.Events.ModuleService.Module"/> y <see cref="P:Kernel.Plugins.Events.ModuleService.Service"/> en formato {Module/Service}
            </summary>
            <returns></returns>
        </member>
        <member name="M:Kernel.Plugins.Events.ModuleService.op_Implicit(Kernel.Plugins.Events.ModuleService)~System.String">
            <summary>
            Devuelve los valores de las propiedades <see cref="P:Kernel.Plugins.Events.ModuleService.Module"/> y <see cref="P:Kernel.Plugins.Events.ModuleService.Service"/> en formato {Module/Service}
            </summary>
            <param name="moduleService">Parámetro de tipo Permission que contiene los datos</param>
        </member>
        <member name="M:Kernel.Plugins.Events.ModuleService.op_Implicit(Kernel.Plugins.Events.ModuleService)~System.Int32">
            <summary>
            Devuelve el valor de la propiedad <see cref="P:Kernel.Plugins.Events.ModuleService.PermissionId"/>
            </summary>
            <param name="moduleService">Parámetro de tipo Permission que contiene los datos</param>
        </member>
        <member name="M:Kernel.Plugins.Events.ModuleService.op_Equality(Kernel.Plugins.Events.ModuleService,Kernel.Plugins.Events.ModuleService)">
            <summary>
            Devuelve true si los 2 objetos son iguales
            </summary>
            <param name="moduleService1">Parámetro de tipo <see cref="T:Kernel.Plugins.Events.ModuleService"/></param>
            <param name="moduleService2">Parámetro de tipo <see cref="T:Kernel.Plugins.Events.ModuleService"/></param>
            <returns>true si son iguales. false en caso contrario</returns>
        </member>
        <member name="M:Kernel.Plugins.Events.ModuleService.op_Inequality(Kernel.Plugins.Events.ModuleService,Kernel.Plugins.Events.ModuleService)">
            <summary>
            Devuelve true si los 2 objetos son diferentes
            </summary>
            <param name="moduleService1">Parámetro de tipo <see cref="T:Kernel.Plugins.Events.ModuleService"/></param>
            <param name="moduleService2">Parámetro de tipo <see cref="T:Kernel.Plugins.Events.ModuleService"/></param>
            <returns>true si son diferentes. false en caso contrario</returns>
        </member>
        <member name="M:Kernel.Plugins.Events.ModuleService.Equals(Kernel.Plugins.Events.ModuleService)">
            <summary>
            Devuelve true si este objeto es igual a <paramref name="other"/>
            </summary>
            <param name="other">Parámetro de tipo <see cref="T:Kernel.Plugins.Events.ModuleService"/></param>
            <returns>true si son iguales. false en caso contrario</returns>
        </member>
        <member name="M:Kernel.Plugins.Events.ModuleService.Equals(System.Object)">
            <summary>
            Devuelve true si este objeto es igual a <paramref name="obj"/>
            </summary>
            <param name="obj">Parámetro de tipo <see cref="T:Kernel.Plugins.Events.ModuleService"/></param>
            <returns>true si son iguales. false en caso contrario</returns>
        </member>
        <member name="M:Kernel.Plugins.Events.ModuleService.GetHashCode">
            <summary>
            Devuelve el HashCode de la unión de las propiedades <see cref="P:Kernel.Plugins.Events.ModuleService.Module"/> y <see cref="P:Kernel.Plugins.Events.ModuleService.Service"/>
            </summary>
            <returns></returns>
        </member>
        <member name="T:Kernel.Plugins.Configuration">
            <summary>
            Contiene la información de configuración del plugin
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Configuration.PluginName">
            <summary>
            Nombre completo del plugin con el formato {Namespace}.{Plugin}. Es decir, es en nombre completo del tipo del plugin, y debe ser único.
            Para mayor información consultar <see cref="P:System.Type.FullName"/>
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Configuration.PluginPath">
            <summary>
            Ruta física del plugin
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Configuration.IsExtension">
            <summary>
            true si el plugin es una extensión de otro plugin
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Configuration.PluginModuleName">
            <summary>
            Nombre del plugin principal que crea el evento. Si el plugin es de tipo módulo debe ser el mismo nombre del plugin. 
            Cuando es una extensión de un plugin módulo, el nombre del plugin que extiende
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Configuration.LastWriteTime">
            <summary>
            Ultima fecha de escritura del plugin
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Configuration.IsInstalled">
            <summary>
            true si el plugin ya está instalado
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Configuration.IsActivated">
            <summary>
            true si el plugin ya está activo
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Configuration.PluginEventAttributes">
            <summary>
            Lista de tipo <see cref="T:Kernel.Plugins.Events.EventAttribute"/> que contiene la lista de eventos registrados
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Configuration.Dependencies">
            <summary>
            Lista con los nombres de las dependencias que tiene el plugin
            </summary>
        </member>
        <member name="M:Kernel.Plugins.Configuration.#ctor">
            <summary>
            Contiene la información de configuración del plugin
            </summary>
        </member>
        <member name="M:Kernel.Plugins.Configuration.#ctor(Kernel.Plugins.Manifest)">
            <summary>
            Contiene la información de configuración del plugin
            </summary>
            <param name="manifest">Parámetro de tipo <see cref="T:Kernel.Plugins.Manifest"/></param>
        </member>
        <member name="M:Kernel.Plugins.Configuration.CopyValues(Kernel.Plugins.IPluginModule)">
            <summary>
            Copia los valores de los parámetros especificados
            </summary>
            <param name="plugin">Parámetro de tipo <see cref="T:Kernel.Plugins.IPluginModule"/></param>
        </member>
        <member name="T:Kernel.Plugins.ConfigurationComparer">
            <summary>
            Comparador para la clase the <see cref="T:Kernel.Plugins.Configuration"/> que implementa la interfaz <see cref="T:System.Collections.Generic.IEqualityComparer`1"/>
            </summary>
        </member>
        <member name="T:Kernel.Plugins.IWebServiceFilter">
            <summary>
            Extensión de <see cref="T:Kernel.Plugins.IWebServiceFilter"/> para <see cref="T:Kernel.Plugins.WebServiceFilter`1"/>
            </summary>
        </member>
        <member name="T:Kernel.Plugins.WebServiceFilter`1">
            <summary>
            Clase derivada de <see cref="T:Kernel.Plugins.Events.Filter`1"/>para manejo de servicios Web para los plugins, y 
            que implementa la interfaz <see cref="T:Kernel.Plugins.Events.IEventWebAPIService"/>
            </summary>
        </member>
        <member name="P:Kernel.Plugins.WebServiceFilter`1.ModuleService">
            <summary>
            Nombre del módulo, nombre del servicio y permiso Id necesario del servicio Web API
            </summary>
        </member>
        <member name="M:Kernel.Plugins.WebServiceFilter`1.#ctor(Kernel.Plugins.Events.ModuleService,System.String,Kernel.Plugins.Events.FilterCallback{`0},System.Int32,System.Boolean)">
            <summary>
            Clase para registrar y exponer los plugins (módulos) y sus servicios
            </summary>
            <param name="moduleService">Parámetro de tipo <see cref="T:Kernel.Plugins.Events.ModuleService"/> que tiene el nombre del módulo, 
            nombre del servicio y permiso Id necesario del servicio Web API</param>
            <param name="pluginModuleName">Si el plugin es de tipo módulo debe ser el mismo nombre del plugin. Cuando es una extensión de un plugin módulo, 
            el nombre del plugin que extiende</param>
            <param name="filterCallback">Método a llamar de tipo <see cref="T:Kernel.Plugins.Events.FilterCallback`1"/> cuando se invoque el evento</param>
            <param name="priority">Prioridad del evento.  10 por defecto</param>
            <param name="serializeResult">true si se debe serializar el resultado devuelto por <see cref="M:Kernel.Plugins.Events.Filter`1.DoFilter(System.Object[])"/></param>
        </member>
        <member name="M:Kernel.Plugins.WebServiceFilter`1.#ctor(Kernel.Plugins.WebServiceFilter{`0})">
            <summary>
            Clase para registrar y exponer los plugins (módulos) y sus servicios
            </summary>
            <param name="webServiceInfo">Construye el objeto con los valores de éste parámetro que es de tipo <see cref="T:Kernel.Plugins.WebServiceFilter`1"/></param>
        </member>
        <member name="T:Kernel.Plugins.ExtendableJsonModel">
            <summary>
            Clase utilizada para derivar otros objetos y serializarlos con Json
            </summary>
        </member>
        <member name="P:Kernel.Plugins.ExtendableJsonModel.ExtensionData">
            <summary>
            Diccionario con la información adicional obtenida de la serialización del objeto
            </summary>
        </member>
        <member name="M:Kernel.Plugins.ExtendableJsonModel.CopyModel(Kernel.Plugins.IExtendableJsonModel)">
            <summary>
            Copia los valores de las propiedades de un objeto de tipo IExtendableJsonModel en el objeto actual
            </summary>
            <param name="source">Objeto de tipo IExtendableJsonModel</param>
        </member>
        <member name="M:Kernel.Plugins.ExtendableJsonModel.CopyExtensionData(Kernel.Plugins.IExtendableJsonModel)">
            <summary>
            Copia los valores de ExtensionData de un objeto de tipo IExtendableJsonModel en el objeto actual
            </summary>
            <param name="source">Objeto de tipo IExtendableJsonModel</param>
        </member>
        <member name="T:Kernel.Plugins.IExtendableJsonModel">
            <summary>
            Interfaz utilizada para indicar que una clase va a ser extendida de manera que cuando se deserializa con Json se puedan guardar los valores de 
            adicionales que provienen de clases extendidas, y así no se pierda esta información
            </summary>
        </member>
        <member name="P:Kernel.Plugins.IExtendableJsonModel.ExtensionData">
            <summary>
            Diccionario que contiene la lista de datos con su nombre (string) y el valor (object)
            </summary>
        </member>
        <member name="T:Kernel.Plugins.IPluginExtension">
            <summary>
            Interfaz para extensiones de plugin derivada de <see cref="T:Kernel.Plugins.IPluginModule"/>
            </summary>
        </member>
        <member name="P:Kernel.Plugins.IPluginExtension.PluginModuleName">
            <summary>
            Nombre del plugin principal que crea el evento. Si el plugin es de tipo módulo debe ser el mismo nombre del plugin. 
            Cuando es una extensión de un plugin módulo, el nombre del plugin que extiende
            </summary>
        </member>
        <member name="T:Kernel.Plugins.PluginUninstalledEventHandler">
            <summary>
            Se utiliza por la clase <see cref="T:Kernel.Plugins.PluginModuleBase`1"/> para notificar a quien necesite que el plugin está haciendo Dipose.
            </summary>
        </member>
        <member name="T:Kernel.Plugins.PluginChangedEventHandler">
            <summary>
            Se utiliza por la clase <see cref="T:Kernel.Plugins.PluginModuleBase`1"/> para notificar a quien necesite que las propiedades del plugin han cambiado.
            </summary>
        </member>
        <member name="T:Kernel.Plugins.IPluginModule">
            <summary>
            Esta interfaz debe ser implementada por todos los plugins que se vayan a desarrollar
            Implementa la interfaz <see cref="T:Kernel.Plugins.ISetup"/>
            </summary>
        </member>
        <member name="E:Kernel.Plugins.IPluginModule.NotifyUninstalled">
            <summary>
            Se utiliza por la clase <see cref="T:Kernel.Plugins.PluginModuleBase`1"/> para notificar a quien necesite que el plugin está haciendo Dipose.
            </summary>
        </member>
        <member name="E:Kernel.Plugins.IPluginModule.NotifyChanged">
            <summary>
            Se utiliza por la clase <see cref="T:Kernel.Plugins.PluginModuleBase`1"/> para notificar a quien necesite que las propiedades del plugin han cambiado.
            </summary>
        </member>
        <member name="P:Kernel.Plugins.IPluginModule.PluginName">
            <summary>
            Nombre del plugin con el formato {Namespace}.{Plugin}. Es decir, es en nombre completo del tipo del plugin, y debe ser único.
            Para mayor información consultar <see cref="P:System.Type.FullName"/>
            </summary>
        </member>
        <member name="P:Kernel.Plugins.IPluginModule.Type">
            <summary>
            Contiene el tipo del plugin <see cref="T:System.Type"/>
            </summary>
        </member>
        <member name="P:Kernel.Plugins.IPluginModule.PluginPath">
            <summary>
            PluginPath en donde está ubicado el plugin
            </summary>
        </member>
        <member name="P:Kernel.Plugins.IPluginModule.PluginServices">
            <summary>
            ServiceProvider del plugin para el middleware
            </summary>
        </member>
        <member name="P:Kernel.Plugins.IPluginModule.APIServices">
            <summary>
            La aplicación Web API o Web App que está corriendo y sobre la que se ha instalado este plugin
            </summary>
        </member>
        <member name="P:Kernel.Plugins.IPluginModule.Actions">
            <summary>
            Lista de acciones de tipo <see cref="T:Kernel.Plugins.Events.Action"/> implementadas por el plugin.
            </summary>
        </member>
        <member name="P:Kernel.Plugins.IPluginModule.Filters">
            <summary>
            Lista de filtros de tipo <see cref="T:Kernel.Plugins.Events.IFilter"/> implementados por el plugin.
            </summary>
        </member>
        <member name="P:Kernel.Plugins.IPluginModule.IsInstalled">
            <summary>
            true si el plugin está instalado, false en caso contrario
            </summary>
        </member>
        <member name="P:Kernel.Plugins.IPluginModule.IsActivated">
            <summary>
            true si el plugin está activo, false en caso contrario
            </summary>
        </member>
        <member name="P:Kernel.Plugins.IPluginModule.IsExtension">
            <summary>
            true si el plugin es de tipo extensión
            </summary>
        </member>
        <member name="P:Kernel.Plugins.IPluginModule.Module">
            <summary>
            Nombre del módulo para servicios Web
            </summary>
        </member>
        <member name="P:Kernel.Plugins.IPluginModule.ModuleName">
            <summary>
            Utiliza la propiedad <see cref="P:Kernel.Plugins.IPluginModule.PluginName"/> si el plugin es de tipo módulo, 
            o la propiedad <see cref="P:Kernel.Plugins.IPluginExtension.PluginModuleName"/> si el plugin es de tipo extensión
            </summary>
        </member>
        <member name="M:Kernel.Plugins.IPluginModule.ConfigureServices(Microsoft.Extensions.DependencyInjection.IServiceCollection)">
            <summary>
            Configura los servicios del middleware
            </summary>
            <param name="services"></param>
        </member>
        <member name="M:Kernel.Plugins.IPluginModule.RemoveServices(Microsoft.Extensions.DependencyInjection.IServiceCollection)">
            <summary>
            Remueve los servicios del middleware
            </summary>
            <param name="services"></param>
        </member>
        <member name="M:Kernel.Plugins.IPluginModule.GenerateManifiest">
            <summary>
            Genera el archivo de manifiesto
            </summary>
            <returns>Ruta del manifiesto</returns>
        </member>
        <member name="M:Kernel.Plugins.IPluginModule.FindAction(System.String,System.String)">
            <summary>
            Busca la acción con el nombre proporcionado
            </summary>
            <param name="eventName">Nombre del evento</param>
            <param name="pluginModuleName">Si el plugin es de tipo módulo debe ser el mismo nombre del plugin. Cuando es una extensión de un plugin módulo, 
            el nombre del plugin que extiende</param>
            <returns>Objeto de tipo <see cref="T:Kernel.Plugins.Events.IEvent"/></returns>
        </member>
        <member name="M:Kernel.Plugins.IPluginModule.FindFilter(System.String,System.String)">
            <summary>
            Busca el filtro con el nombre proporcionado
            </summary>
            <param name="eventName">Nombre del evento</param>
            <param name="pluginModuleName">Si el plugin es de tipo módulo debe ser el mismo nombre del plugin. Cuando es una extensión de un plugin módulo, 
            el nombre del plugin que extiende</param>
            <returns>Objeto de tipo <see cref="T:Kernel.Plugins.Events.IEvent"/></returns>
        </member>
        <member name="T:Kernel.Plugins.ISetup">
            <summary>
            Esta es una interfaz obligatoria, es decir que todo plugin debe implementarla.  Contiene métodos para instalar y 
            desinstalar el plugin, agregar o remover plugins complementarios, activar o desactivar el plugin o descubrir las 
            características que soporta dicho plugin.
            </summary>
        </member>
        <member name="P:Kernel.Plugins.ISetup.Manifest">
            <summary>
            Permite consultar los atributos y las capacidades de un plugin, como nombre, descripción, versión, dependencias, 
            interfaces soportadas, etc.
            </summary>
            <returns></returns>
        </member>
        <member name="M:Kernel.Plugins.ISetup.Install">
            <summary>
            Se utiliza durante el proceso de instalación de un plugin y le permite realizar las tareas de inicialización del 
            mismo durante este proceso.
            Aquí se deben llevar a cabo los procesos de inicialización tales como crear esquemas 
            y objetos en la base de datos, o archivos temporales para su funcionamiento.
            </summary>
        </member>
        <member name="M:Kernel.Plugins.ISetup.Uninstall">
            <summary>
            Se utiliza durante el proceso de desinstalación del plugin y permite remover o liberar los recursos exclusivos del plugin 
            al momento de desinstalarlo.
            Aquí se deben llevar a cabo los procesos de limpieza cuando se elimina el plugin. Por ejemplo eliminar esquemas 
            y objetos creados en la base de datos, o archivos temporales creados para su funcionamiento.
            </summary>
        </member>
        <member name="M:Kernel.Plugins.ISetup.Add(System.String)">
            <summary>
            Se invoca al momento de la instalación de otro plugin que complementa a este plugin. Informa a un plugin cuando se 
            instala un complemento para que se registre y se inicialice lo que sea necesario para integrarse con el nuevo complemento.
            </summary>
            <param name="pluginName">Nombre del plugin extensión o complemento</param>
        </member>
        <member name="M:Kernel.Plugins.ISetup.Remove(System.String)">
            <summary>
            Se invoca cuando al momento de la desinstalación de otro plugin que complementa a este plugin. Se utiliza para informar 
            que se está desinstalando un plugin complementario y que dicho complemento no estará más disponible
            </summary>
            <param name="pluginName">Nombre del plugin extensión o complemento</param>
        </member>
        <member name="M:Kernel.Plugins.ISetup.Activate">
            <summary>
            Como un plugin puede ser activado o desactivado, se utiliza al momento de la activación de un plugin, para notificar al 
            plugin y que realice las acciones requeridas cuando se pasa a estado activo.
            </summary>
        </member>
        <member name="M:Kernel.Plugins.ISetup.Deactivate">
            <summary>
            Como un plugin puede ser activado o desactivado, se utiliza al momento de la desactivación de un plugin, 
            para notificar al plugin y que realice las acciones requeridas cuando se pasa a estado inactivo
            </summary>
        </member>
        <member name="T:Kernel.Plugins.Manifest">
            <summary>
            Contiene la información que un plugin debe implementar en su manifiesto
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Manifest.ProductName">
            <summary>
            Contiene el nombre del producto.
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Manifest.PluginName">
            <summary>
            Nombre del plugin con el formato {Namespace}.{Plugin}. Es decir, es en nombre completo del tipo del plugin, y debe ser único.
            Para mayor información consultar <see cref="P:System.Type.FullName"/>
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Manifest.PluginPath">
            <summary>
            Ruta de la dll principal del plugin
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Manifest.Description">
            <summary>
             Descripción detallada del plugin
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Manifest.Version">
            <summary>
            Vsersión del plugin
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Manifest.CompanyName">
            <summary>
            Nombre de la empresa desarrolladora del plugin
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Manifest.LegalCopyright">
            <summary>
            Información con los derechos de autor
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Manifest.IsExtension">
            <summary>
            true si es un plugin de tipo extensión, de lo contrario false
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Manifest.PluginModuleName">
            <summary>
            Nombre del plugin principal que crea el evento. Si el plugin es de tipo módulo debe ser el mismo nombre del plugin. 
            Cuando es una extensión de un plugin módulo, el nombre del plugin que extiende
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Manifest.EventAttributes">
            <summary>
            Lista con los eventos que el plugin implementa <see cref="T:Kernel.Plugins.Events.EventAttribute"/>
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Manifest.WebServices">
            <summary>
            Lista con los web services que el plugin implementa <see cref="T:Kernel.Plugins.Events.EventAttributeWebService"/>
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Manifest.Menus">
            <summary>
            Lista con los menús que el plugin implementa <see cref="T:Kernel.Plugins.Events.EventAttributeMenu"/>
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Manifest.Attributes">
            <summary>
            Lista de atributos adicionales que el plugin implementa <see cref="T:Kernel.Plugins.Attribute"/>
            </summary>
        </member>
        <member name="P:Kernel.Plugins.Manifest.Dependencies">
            <summary>
            Lista con los nombres de las dependencias que tiene el plugin
            </summary>
        </member>
        <member name="M:Kernel.Plugins.Manifest.#ctor">
            <summary>
            Constructor
            </summary>
        </member>
        <member name="M:Kernel.Plugins.Manifest.#ctor(Kernel.Plugins.Manifest)">
            <summary>
            Constructor que recibe un objeto de tipo <see cref="T:Kernel.Plugins.Manifest"/>
            </summary>
            <param name="manifest"></param>
        </member>
        <member name="T:Kernel.Plugins.PluginException">
            <summary>
            Clase derivada de <see cref="T:Kernel.Helper.NEException"/> para los plugins/>
            </summary>
        </member>
        <member name="M:Kernel.Plugins.PluginException.#ctor(System.String,System.Exception,System.Int32,System.Int32,System.Int32)">
            <summary>
            Manejo de errores utilizando <see cref="T:Kernel.Helper.NEException"/>
            </summary>
            <param name="message">Mensaje del error</param>
            <param name="innerException">Inner exception del error</param>
            <param name="project"></param>
            <param name="module">Número del módulo</param>
            <param name="error">Número de error</param>
        </member>
        <member name="T:Kernel.Plugins.PluginExtensionBase`1">
            <summary>
            Extensión de la clase <see cref="T:Kernel.Plugins.PluginModuleBase`1"/> que implementa la interfaz <see cref="T:Kernel.Plugins.IPluginExtension"/>
            Los plugins de tipo extensión deben ser derivados de esta clase e implementar los métodos y propiedades de tipo abstract
            </summary>
            <typeparam name="T">Clase que se deriva de <see cref="T:Kernel.Plugins.PluginExtensionBase`1"/> y que la implementa</typeparam>
        </member>
        <member name="P:Kernel.Plugins.PluginExtensionBase`1.PluginModuleName">
            <summary>
            Nombre del plugin principal que crea el evento. Si el plugin es de tipo módulo debe ser el mismo nombre del plugin. 
            Cuando es una extensión de un plugin módulo, el nombre del plugin que extiende.
            </summary>
        </member>
        <member name="P:Kernel.Plugins.PluginExtensionBase`1.DefaultPluginModuleName">
            <summary>
            Se utiliza para obtener el valor por defecto de <see cref="P:Kernel.Plugins.PluginExtensionBase`1.PluginModuleName"/>.
            </summary>
        </member>
        <member name="M:Kernel.Plugins.PluginExtensionBase`1.#ctor(Kernel.API.Services,System.String,System.String)">
            <summary>
            Constructor de <see cref="T:Kernel.Plugins.PluginExtensionBase`1"/> que recibe una instancia de la aplicación que implementa <see cref="T:Kernel.API.Services"/>
            </summary>
            <param name="kernelAPIServices">Parámetro de tipo  <see cref="T:Kernel.API.Services"/> para poder utilizar los servicios ofrecidos por esta clase</param>
            <param name="pluginPath">Ruta del plugin. Se necesita porque se hace un Shadow Copy de los assemblies
            <param name="module">Nombre del módulo para servicios Web. Si es null se utiliza el nombre del namespace de la clase</param>
            para evitar bloqueos de los archivos cuando se instalan/desinstalan</param>
        </member>
        <member name="M:Kernel.Plugins.PluginExtensionBase`1.SetupClass">
            <summary>
            Configura propiedades y valores de la clase
            </summary>
        </member>
        <member name="M:Kernel.Plugins.PluginExtensionBase`1.SetManifest(Kernel.Plugins.Manifest,System.Boolean)">
            <summary>
            Actualiza el valor de Manifest con el parámetro <paramref name="manifest"/>"/>
            </summary>
            <param name="manifest">Parámetro de tipo <see cref="T:Kernel.Plugins.Manifest"/></param>
            <param name="savingValues">true si los valores se están guardando</param>
        </member>
        <member name="T:Kernel.Plugins.PluginModuleBase`1">
            <summary>
            Esta clase debe ser implementada por todos los plugins que se vayan a desarrollar
            Implementa la interfaz <see cref="T:Kernel.Plugins.IPluginModule"/>, que a su vez implementa la interfaz <see cref="T:Kernel.Plugins.ISetup"/>
            </summary>
            <typeparam name="T"></typeparam>
        </member>
        <member name="E:Kernel.Plugins.PluginModuleBase`1.NotifyUninstalled">
            <summary>
            Se utiliza para notificar a quien necesite que el plugin está haciendo Dipose.
            </summary>
        </member>
        <member name="E:Kernel.Plugins.PluginModuleBase`1.NotifyChanged">
            <summary>
            Se utiliza por la clase <see cref="T:Kernel.Plugins.PluginModuleBase`1"/> para notificar a quien necesite que las propiedades del plugin han cambiado.
            </summary>
        </member>
        <member name="P:Kernel.Plugins.PluginModuleBase`1.PluginName">
            <summary>
            Nombre del plugin con el formato {Namespace}.{Plugin}. Es decir, es en nombre completo del tipo del plugin, y debe ser único.
            Para mayor información consultar <see cref="P:System.Type.FullName"/>
            </summary>
        </member>
        <member name="P:Kernel.Plugins.PluginModuleBase`1.Type">
            <summary>
            Contiene el tipo del plugin <see cref="T:System.Type"/>
            </summary>
        </member>
        <member name="P:Kernel.Plugins.PluginModuleBase`1.PluginPath">
            <summary>
            PluginPath en donde está ubicado el plugin
            </summary>
        </member>
        <member name="P:Kernel.Plugins.PluginModuleBase`1.PluginServices">
            <summary>
            ServiceProvider del plugin para el middleware
            </summary>
        </member>
        <member name="P:Kernel.Plugins.PluginModuleBase`1.APIServices">
            <summary>
            Servicios API de tipo <see cref="T:Kernel.API.Services"/>
            </summary>
        </member>
        <member name="P:Kernel.Plugins.PluginModuleBase`1.IsInstalled">
            <summary>
            true si el plugin está instalado, false en caso contrario
            </summary>
        </member>
        <member name="P:Kernel.Plugins.PluginModuleBase`1.IsActivated">
            <summary>
            true si el plugin está activo, false en caso contrario
            </summary>
        </member>
        <member name="P:Kernel.Plugins.PluginModuleBase`1.IsExtension">
            <summary>
            true si el plugin es de tipo extensión
            </summary>
        </member>
        <member name="P:Kernel.Plugins.PluginModuleBase`1.Manifest">
            <summary>
            Permite consultar los atributos y las capacidades de un plugin, como nombre, descripción, versión, dependencias, 
            interfaces soportadas, etc.
            </summary>
            <returns></returns>
        </member>
        <member name="P:Kernel.Plugins.PluginModuleBase`1.Actions">
            <summary>
            Lista de acciones implementadas por el plugin. <see cref="T:Kernel.Plugins.Events.Action"/>
            </summary>
        </member>
        <member name="P:Kernel.Plugins.PluginModuleBase`1.Filters">
            <summary>
            Lista de filtros de tipo <see cref="T:Kernel.Plugins.Events.IFilter"/> implementados por el plugin.
            </summary>
        </member>
        <member name="P:Kernel.Plugins.PluginModuleBase`1.MenuInfos">
            <summary>
            Lista de tipo <see cref="T:Kernel.WebApp.MenuInfo"/>
            </summary>
        </member>
        <member name="P:Kernel.Plugins.PluginModuleBase`1.PluginWebServices">
            <summary>
            Lista de tipo <see cref="T:Kernel.WebAPI.WebService"/>
            </summary>
        </member>
        <member name="P:Kernel.Plugins.PluginModuleBase`1.ApplicationServices">
            <summary>
            Instancia de tipo <see cref="T:System.IServiceProvider"/>
            </summary>
        </member>
        <member name="P:Kernel.Plugins.PluginModuleBase`1.Logger">
            <summary>
            Instancia de tipo <see cref="T:Microsoft.Extensions.Logging.ILogger"/>
            </summary>
        </member>
        <member name="P:Kernel.Plugins.PluginModuleBase`1.GlobalConfiguration">
            <summary>
            Instancia de tipo <see cref="T:Microsoft.Extensions.Configuration.IConfiguration"/> para la configuración global de la aplicación
            </summary>
        </member>
        <member name="P:Kernel.Plugins.PluginModuleBase`1.LocalConfiguration">
            <summary>
            Instancia de tipo <see cref="T:Microsoft.Extensions.Configuration.IConfiguration"/> parala configuración de cada plugin
            </summary>
        </member>
        <member name="P:Kernel.Plugins.PluginModuleBase`1.DatabaseName">
            <summary>
            Nombre de la base de datos
            </summary>
        </member>
        <member name="P:Kernel.Plugins.PluginModuleBase`1.Module">
            <summary>
            Nombre del módulo para servicios Web
            </summary>
        </member>
        <member name="P:Kernel.Plugins.PluginModuleBase`1.ModuleName">
            <summary>
            Utiliza la propiedad <see cref="P:Kernel.Plugins.IPluginModule.PluginName"/> si el plugin es de tipo módulo, 
            o la propiedad <see cref="P:Kernel.Plugins.IPluginExtension.PluginModuleName"/> si el plugin es de tipo extensión
            </summary>
        </member>
        <member name="M:Kernel.Plugins.PluginModuleBase`1.#ctor(Kernel.API.Services,System.String,System.String)">
            <summary>
            Constructor de <see cref="T:Kernel.Plugins.PluginModuleBase`1"/> que recibe una instancia de la aplicación que implementa <see cref="T:Kernel.API.Services"/>
            </summary>
            <param name="kernelAPIServices">Parámetro de tipo  <see cref="T:Kernel.API.Services"/> para poder utilizar los servicios ofrecidos por esta clase</param>
            <param name="pluginPath">Ruta del plugin. Se necesita porque se hace un Shadow Copy de los assemblies
            para evitar bloqueos de los archivos cuando se instalan/desinstalan</param>
            <param name="module">Nombre del módulo para servicios Web. Si es null se utiliza el nombre del namespace de la clase</param>
        </member>
        <member name="M:Kernel.Plugins.PluginModuleBase`1.SetManifest(Kernel.Plugins.Manifest,System.Boolean)">
            <summary>
            Actualiza el valor de Manifest con el parámetro <paramref name="manifest"/>"/>
            </summary>
            <param name="manifest">Parámetro de tipo <see cref="P:Kernel.Plugins.PluginModuleBase`1.Manifest"/></param>
            <param name="savingValues">true si los valores se están guardando</param>
        </member>
        <member name="M:Kernel.Plugins.PluginModuleBase`1.SetupEvents">
            <summary>
            Crea las listas de los eventos (acciones, filtros, servicios web o menús) del plugin
            </summary>
        </member>
        <member name="M:Kernel.Plugins.PluginModuleBase`1.InstallPlugin">
            Se utiliza durante el proceso de instalación de un plugin y le permite realizar las tareas de inicialización del 
            mismo durante este proceso.
            Aquí se deben llevar a cabo los procesos de inicialización tales como crear esquemas 
            y objetos en la base de datos, o archivos temporales para su funcionamiento.
        </member>
        <member name="M:Kernel.Plugins.PluginModuleBase`1.UninstallPlugin">
            <summary>
            Se utiliza durante el proceso de desinstalación de un plugin y permite al plugin realizar las tareas de inicialización del 
            mismo durante este proceso.
            Aquí se deben llevar a cabo los procesos de limpieza cuando se elimina el plugin. Por ejemplo eliminar esquemas 
            y objetos creados en la base de datos, o archivos temporales creados para su funcionamiento.
            </summary>
        </member>
        <member name="M:Kernel.Plugins.PluginModuleBase`1.ConfigureServices(Microsoft.Extensions.DependencyInjection.IServiceCollection)">
            <summary>
            Configura y construye los servicios del plugin utilizando Dependency Injection
            </summary>
            <param name="services"></param>
        </member>
        <member name="M:Kernel.Plugins.PluginModuleBase`1.RemoveServices(Microsoft.Extensions.DependencyInjection.IServiceCollection)">
            <summary>
            Remueve los servicios registrados a través de Dependency Injection
            </summary>
            <param name="services"></param>
        </member>
        <member name="M:Kernel.Plugins.PluginModuleBase`1.GenerateManifiest">
            <summary>
            Genera el archivo de manifiesto
            </summary>
            <returns>Ruta del manifiesto</returns>
        </member>
        <member name="M:Kernel.Plugins.PluginModuleBase`1.GetManifest">
            <summary>
            Devuelve el manifiesto del plugin
            </summary>
            <returns></returns>
        </member>
        <member name="M:Kernel.Plugins.PluginModuleBase`1.Install">
            <summary>
            Se utiliza durante el proceso de instalación de un plugin y le permite realizar las tareas de inicialización del 
            mismo durante este proceso.
            Aquí se deben llevar a cabo los procesos de inicialización tales como crear esquemas 
            y objetos en la base de datos, o archivos temporales para su funcionamiento.
            </summary>
        </member>
        <member name="M:Kernel.Plugins.PluginModuleBase`1.Uninstall">
            <summary>
            Se utiliza durante el proceso de instalación de un plugin y le permite realizar las tareas de inicialización del 
            mismo durante este proceso.
            Aquí se deben llevar a cabo los procesos de limpieza cuando se elimina el plugin. Por ejemplo eliminar esquemas 
            y objetos creados en la base de datos, o archivos temporales creados para su funcionamiento.
            </summary>
        </member>
        <member name="M:Kernel.Plugins.PluginModuleBase`1.Activate">
            <summary>
            Se invoca al momento de la instalación de otro plugin que complementa a este plugin. Informa a un plugin cuando se 
            instala un complemento para que se registre y se inicialice lo que sea necesario para integrarse con el nuevo complemento.
            </summary>
        </member>
        <member name="M:Kernel.Plugins.PluginModuleBase`1.Deactivate">
            <summary>
            Como un plugin puede ser activado o desactivado, se utiliza al momento de la desactivación de un plugin, 
            para notificar al plugin y que realice las acciones requeridas cuando se pasa a estado inactivo
            </summary>
        </member>
        <member name="M:Kernel.Plugins.PluginModuleBase`1.Add(System.String)">
            <summary>
            Se invoca al momento de la instalación de otro plugin que complementa a este plugin. Informa a un plugin cuando se 
            instala un complemento para que se registre y se inicialice lo que sea necesario para integrarse con el nuevo complemento.
            </summary>
            <param name="pluginName">Nombre del plugin extensión o complemento</param>
        </member>
        <member name="M:Kernel.Plugins.PluginModuleBase`1.Remove(System.String)">
            <summary>
            Se invoca cuando al momento de la desinstalación de otro plugin que complementa a este plugin. Se utiliza para informar 
            que se está desinstalando un plugin complementario y que dicho complemento no estará más disponible
            </summary>
            <param name="pluginName">Nombre del plugin extensión o complemento</param>
        </member>
        <member name="M:Kernel.Plugins.PluginModuleBase`1.FindAction(System.String,System.String)">
            <summary>
            Busca la acción con el nombre proporcionado
            </summary>
            <param name="eventName">Nombre del evento</param>
            <param name="pluginModuleName">Si el plugin es de tipo módulo debe ser el mismo nombre del plugin. Cuando es una extensión de un plugin módulo, 
            el nombre del plugin que extiende</param>
            <returns>Objeto de tipo <see cref="T:Kernel.Plugins.Events.IEvent"/></returns>
        </member>
        <member name="M:Kernel.Plugins.PluginModuleBase`1.FindFilter(System.String,System.String)">
            <summary>
            Busca el filtro con el nombre proporcionado
            </summary>
            <param name="eventName">Nombre del evento</param>
            <param name="pluginModuleName">Si el plugin es de tipo módulo debe ser el mismo nombre del plugin. Cuando es una extensión de un plugin módulo, 
            el nombre del plugin que extiende</param>
            <returns>Objeto de tipo <see cref="T:Kernel.Plugins.Events.IEvent"/></returns>
        </member>
        <member name="M:Kernel.Plugins.PluginModuleBase`1.SetupClass">
            <summary>
            Configura propiedades y valores de la clase durante la construcción del objeto
            </summary>
        </member>
        <member name="M:Kernel.Plugins.PluginModuleBase`1.AddEventHandlers">
            <summary>
            Este método se llama después de Activate, que debe construir la lista de acciones, filtros, menús y web services
            </summary>
        </member>
        <member name="M:Kernel.Plugins.PluginModuleBase`1.ConfigurePluginServices(Microsoft.Extensions.DependencyInjection.IServiceCollection)">
            <summary>
            Configura los servicios del plugin para Dependency Injection. El plugin debe sobrecargar este método si necesita 
            registrar y configurar sus servicios
            </summary>
            <param name="services">Collección de servicios utilizando Dependency Injection. 
            Para mayor información consultar <see cref="T:Microsoft.Extensions.DependencyInjection.IServiceCollection"/></param>
        </member>
        <member name="M:Kernel.Plugins.PluginModuleBase`1.Configure(System.IServiceProvider)">
            <summary>
            Este método se llama cuando los servicios de Dependency Injection ya están configurados
            </summary>
        </member>
        <member name="M:Kernel.Plugins.PluginModuleBase`1.AddScopedService``1">
            <summary>
            Adds a scoped service of the type specified in TService with a factory specified
            in implementationFactory to the specified Microsoft.Extensions.DependencyInjection.IServiceCollection.
            </summary>
            <typeparam name="TService"></typeparam>
            <returns></returns>
        </member>
        <member name="M:Kernel.Plugins.PluginModuleBase`1.FindEvent(System.Collections.Generic.IEnumerable{Kernel.Plugins.Events.IEvent},System.String)">
            <summary>
            Busca el evento con el nombre proporcionado
            </summary>
            <param name="events">Lista de eventos</param>
            <param name="eventName">Nombre del evento</param>
            <returns></returns>
        </member>
        <member name="M:Kernel.Plugins.PluginModuleBase`1.SaveManifest(Kernel.Plugins.Manifest)">
            <summary>
            Guarda la clase <paramref name="manifest"/> en un archivo
            </summary>
            <param name="manifest">Parámetro de tipo <see cref="P:Kernel.Plugins.PluginModuleBase`1.Manifest"/></param>
        </member>
        <member name="M:Kernel.Plugins.PluginModuleBase`1.Dispose(System.Boolean)">
            <summary>
            Dispose(bool disposing) executes in two distinct scenarios.
            If disposing equals true, the method has been called directly
            or indirectly by a user's code. Managed and unmanaged resources
            can be disposed.
            If disposing equals false, the method has been called by the
            runtime from inside the finalizer and you should not reference
            other objects. Only unmanaged resources can be disposed.
            </summary>
        </member>
        <member name="M:Kernel.Plugins.PluginModuleBase`1.Finalize">
            <summary>
            Destructor de la clase
            </summary>
        </member>
        <member name="M:Kernel.Plugins.PluginModuleBase`1.Dispose">
            <summary>
            Implement IDisposable.
            Do not make this method virtual.
            A derived class should not be able to override this method.
            </summary>
        </member>
        <member name="T:Kernel.Plugins.PluginsHelper">
            <summary>
            Clase helper para la generación de manifiestos de plugins. Proporciona métodos para procesar archivos de plugins,
            </summary>
        </member>
        <member name="M:Kernel.Plugins.PluginsHelper.GenerateManifest(System.String)">
            <summary>
            Genera el archivo de manifiesto para un plugin específico. Este método es una sobrecarga que llama al método principal
            </summary>
            <param name="pluginFile">Ruta del archivo DLL del plugin para el cual se generará el manifiesto.</param>
        </member>
        <member name="M:Kernel.Plugins.PluginsHelper.GenerateManifests(System.String[])">
            <summary>
            Genera los archivos de manifiesto para los plugins especificados. Procesa cada archivo de plugin en paralelo,
            carga los ensamblados, identifica los tipos que implementan <see cref="T:Kernel.Plugins.IPluginModule"/> y genera el manifiesto
            correspondiente para cada uno.
            </summary>
            <param name="pluginFiles">Arreglo con las rutas de los archivos DLL de los plugins a procesar.</param>
        </member>
        <member name="M:Kernel.Plugins.PluginsHelper.GenerateManifests(System.String[],System.String,System.Action{System.Collections.Generic.List{System.String}},System.Action{System.Int32})">
            <summary>
            Genera los archivos de manifiesto para los plugins especificados. Procesa cada archivo de plugin en paralelo,
            carga los ensamblados, identifica los tipos que implementan <see cref="T:Kernel.Plugins.IPluginModule"/> y genera el manifiesto
            correspondiente para cada uno.
            </summary>
            <param name="pluginFiles">Arreglo con las rutas de los archivos DLL de los plugins a procesar.</param>
            <param name="startingMessage">Mensaje inicial que se agrega al inicio del registro de salida.</param>
            <param name="printResults">Acción que se invoca para imprimir los resultados parciales durante el procesamiento.</param>
            <param name="reportProgress">Acción que se invoca para reportar el progreso de generación de manifiestos (valor de 0 a 100).</param>
            <returns>Cola concurrente con los mensajes de salida generados durante el procesamiento.</returns>
        </member>
        <member name="M:Kernel.Plugins.PluginsHelper.GetPluginTypes(McMaster.NETCore.Plugins.PluginLoader,System.Reflection.Assembly@)">
            <summary>
            Devuelve una lista de tipos que implementan la interfaz <see cref="T:Kernel.Plugins.IPluginModule"/> a partir del ensamblado cargado por el <see cref="T:McMaster.NETCore.Plugins.PluginLoader"/>.
            </summary>
            <param name="loader">Parámetro de tipo <see cref="T:McMaster.NETCore.Plugins.PluginLoader"/></param>
            <param name="assembly">Parámetro de tipo <see cref="T:System.Reflection.Assembly"/> que devuelve el ensamblado cargado</param>
            <returns>Lista de tipos que implementan la interfaz <see cref="T:Kernel.Plugins.IPluginModule"/></returns>
        </member>
        <member name="T:Kernel.Plugins.ManifestInstall">
            <summary>
            Utilizado en la instalación de plugins
            </summary>
        </member>
        <member name="M:Kernel.Plugins.ManifestInstall.#ctor(System.String,System.String)">
            <summary>
            Utilizado en la instalación de plugins
            </summary>
        </member>
        <member name="T:Kernel.Plugins.Services">
            <summary>
            Esta es la capa que se encarga de la gestión de los plugins utilizando la clase <see cref="T:Kernel.Core.PluginsManager"/>
            </summary>
            <remarks>
            Esta es la capa que se encarga de la gestión de los plugins utilizando la clase <see cref="T:Kernel.Core.PluginsManager"/>
            </remarks>
        </member>
        <member name="M:Kernel.Plugins.Services.#ctor(Kernel.Core.PluginsManager,Microsoft.Extensions.Logging.ILogger{Kernel.Plugins.Services})">
            <summary>
            Esta es la capa que se encarga de la gestión de los plugins utilizando la clase <see cref="T:Kernel.Core.PluginsManager"/>
            </summary>
            <remarks>
            Esta es la capa que se encarga de la gestión de los plugins utilizando la clase <see cref="T:Kernel.Core.PluginsManager"/>
            </remarks>
        </member>
        <member name="M:Kernel.Plugins.Services.InstallPlugins(System.String,System.Boolean)">
            <summary>
            Instala los plugins especificados en el archivo de configuración
            </summary>
            <param name="pluginsPath">Ruta del archivo de configuración de los plugins</param>
            <param name="deleteExistingPlugins">Indica si se deben eliminar los plugins existentes antes de la instalación</param>
        </member>
        <member name="M:Kernel.Plugins.Services.Install(System.String,System.String,System.Boolean)">
            <summary>
            Instala el plugin especificado
            </summary>
            <param name="manifestFile">Ruta del plugin a instalar</param>
            <param name="pluginModuleName">Nombre completo del plugin tipo módulo si es una extensión de otro plugin</param>
            <param name="deleteExistingPlugins">Indica si se deben eliminar los plugins existentes antes de la instalación</param>
            <returns>Lista de valores resultados de la operación</returns>
        </member>
        <member name="M:Kernel.Plugins.Services.Install(System.Collections.Generic.List{Kernel.Plugins.ManifestInstall},System.Boolean)">
            <summary>
            Instala la lista de plugins expecificados
            </summary>
            <param name="manifestInstalls">Lista con las rutas de los manifiestos que contienen la información de los plugins a instalar</param>
            <param name="deleteExistingPlugins">Indica si se deben eliminar los plugins existentes antes de la instalación</param>
            <returns></returns>
        </member>
        <member name="M:Kernel.Plugins.Services.Uninstall(System.String)">
            <summary>
            Desinstala el plugin especificado
            </summary>
            <param name="pluginName">Nombre del plugin a desinstalar</param>
            <returns></returns>
        </member>
        <member name="M:Kernel.Plugins.Services.Uninstall(System.Collections.Generic.List{System.String})">
            <summary>
            Desinstala la lista de plugins expecificados
            </summary>
            <param name="pluginNames">Lista con las rutas de los manifiestos que contienen la información de los plugins a instalar</param>
            <returns></returns>
        </member>
        <member name="M:Kernel.Plugins.Services.Activate(System.String)">
            <summary>
            Activa el plugin especificado
            </summary>
            <param name="pluginName">Nombre del plugin a activar</param>
            <returns></returns>
        </member>
        <member name="M:Kernel.Plugins.Services.Deactivate(System.String)">
            <summary>
            Desactiva el plugin especificado
            </summary>
            <param name="pluginName">Nombre del plugin a desactivar</param>
            <returns></returns>
        </member>
        <member name="T:Kernel.Plugins.SpecflowTestsParam">
            <summary>
            Clase para usar en parámetros en la clase <see cref="T:Kernel.Plugins.SpecflowTests"/>
            </summary>
        </member>
        <member name="M:Kernel.Plugins.SpecflowTestsParam.#ctor(System.String,System.Object)">
            <summary>
            Clase para usar en parámetros en la clase <see cref="T:Kernel.Plugins.SpecflowTests"/>
            </summary>
        </member>
        <member name="T:Kernel.Plugins.SpecflowTests">
            <summary>
            Clase para métodos utilitarios en pruebas Specflow
            </summary>
        </member>
        <member name="P:Kernel.Plugins.SpecflowTests.KernelWebAPIHost">
            <summary>
            Url de la aplicación Kernel Web API
            </summary>
        </member>
        <member name="P:Kernel.Plugins.SpecflowTests.LoginToken">
            <summary>
            Token de inicio de sesión
            </summary>
        </member>
        <member name="M:Kernel.Plugins.SpecflowTests.#ctor">
            <summary>
            Clase para métodos utilitarios en pruebas Specflow
            </summary>
        </member>
        <member name="M:Kernel.Plugins.SpecflowTests.GetRequestWithHeaders``1(System.String,System.String,System.String,System.Net.HttpStatusCode@,Kernel.Plugins.SpecflowTestsParam[])">
            <summary>
            Utiliza <see cref="T:RestSharp.RestClient"/> y <see cref="T:RestSharp.RestRequest"/> con el método <see cref="F:RestSharp.Method.Get"/>, con los parámetros 
            en el header
            </summary>
            <typeparam name="T">Tipo de dato esperado</typeparam>
            <param name="url">url del servidor de aplicaciones</param>
            <param name="loginToken">Token de inicio de sesión</param>
            <param name="resource">Módulo/Servicio del servidor de aplicaciones</param>
            <param name="statusCode">Valor devuelto en la operación. Ver <see cref="T:System.Net.HttpStatusCode"/></param>
            <param name="parameters">Parámetros a enviar</param>
            <returns>Resultado de la opración de tipo <typeparamref name="T"/></returns>
        </member>
        <member name="M:Kernel.Plugins.SpecflowTests.GetRequestWithParameters``1(System.String,System.String,System.String,System.Net.HttpStatusCode@,Kernel.Plugins.SpecflowTestsParam[])">
            <summary>
            Utiliza <see cref="T:RestSharp.RestClient"/> y <see cref="T:RestSharp.RestRequest"/> con el método <see cref="F:RestSharp.Method.Get"/>, con los parámetros 
            como QueryString
            </summary>
            <typeparam name="T">Tipo de dato esperado</typeparam>
            <param name="url">url del servidor de aplicaciones</param>
            <param name="loginToken">Token de inicio de sesión</param>
            <param name="resource">Módulo/Servicio del servidor de aplicaciones</param>
            <param name="statusCode">Valor devuelto en la operación. Ver <see cref="T:System.Net.HttpStatusCode"/></param>
            <param name="parameters">Parámetros a enviar</param>
            <returns>Resultado de la opración de tipo <typeparamref name="T"/></returns>
            <returns></returns>
        </member>
        <member name="T:Kernel.Resources.KernelErrors">
            <summary>
              A strongly-typed resource class, for looking up localized strings, etc.
            </summary>
        </member>
        <member name="P:Kernel.Resources.KernelErrors.ResourceManager">
            <summary>
              Returns the cached ResourceManager instance used by this class.
            </summary>
        </member>
        <member name="P:Kernel.Resources.KernelErrors.Culture">
            <summary>
              Overrides the current thread's CurrentUICulture property for all
              resource lookups using this strongly typed resource class.
            </summary>
        </member>
        <member name="P:Kernel.Resources.KernelErrors.AddMenu">
            <summary>
              Looks up a localized string similar to Error creando menú: Ya existe un servicio menú con la misma información {0}.
            </summary>
        </member>
        <member name="P:Kernel.Resources.KernelErrors.AddWebService">
            <summary>
              Looks up a localized string similar to Error creando WebService: Ya existe un servicio web con el nombre {0}.
            </summary>
        </member>
        <member name="P:Kernel.Resources.KernelErrors.HttpClientServicesGet">
            <summary>
              Looks up a localized string similar to Error in KernelAppServices.Get()..
            </summary>
        </member>
        <member name="P:Kernel.Resources.KernelErrors.HttpClientServicesPost">
            <summary>
              Looks up a localized string similar to Error in KernelAppServices.Post()..
            </summary>
        </member>
        <member name="P:Kernel.Resources.KernelErrors.HttpClientServicesVerifyLoginToken">
            <summary>
              Looks up a localized string similar to El usuario no ha iniciado sesión.
            </summary>
        </member>
        <member name="P:Kernel.Resources.KernelErrors.PluginsManagerDoAction">
            <summary>
              Looks up a localized string similar to Error en DoAction..
            </summary>
        </member>
        <member name="P:Kernel.Resources.KernelErrors.PluginsManagerDoFilter">
            <summary>
              Looks up a localized string similar to Error in DoFilter..
            </summary>
        </member>
        <member name="P:Kernel.Resources.KernelErrors.PluginsManagerSavePluginsList">
            <summary>
              Looks up a localized string similar to Error en SavePluginList para {0}.
            </summary>
        </member>
        <member name="P:Kernel.Resources.KernelErrors.ServicesFindMenu">
            <summary>
              Looks up a localized string similar to Error en FindMenu: el objeto no tiene implementada esta función..
            </summary>
        </member>
        <member name="P:Kernel.Resources.KernelErrors.ServicesWepAPICallback">
            <summary>
              Looks up a localized string similar to Error en WepAPICallback:  el objeto no tiene implementada esta función..
            </summary>
        </member>
        <member name="P:Kernel.Resources.KernelErrors.SpecflowTestsRequestExecute">
            <summary>
              Looks up a localized string similar to Error in RequestExecute. Result: {0}. Content: {1}.
            </summary>
        </member>
        <member name="P:Kernel.Resources.KernelErrors.Status401Unauthorized">
            <summary>
              Looks up a localized string similar to Usuario no autorizado..
            </summary>
        </member>
        <member name="T:Kernel.WebAPI.Dispatcher">
            <summary>
            Se encarga de comunicarse con el Kernel.Core utilizando la instancia de tipo <see cref="P:Kernel.WebAPI.Dispatcher.KernelAPI"/>, y llamar a DoAction o DoFilter
            </summary>
        </member>
        <member name="P:Kernel.WebAPI.Dispatcher.KernelAPI">
            <summary>
            Instancia de tipo <see cref="T:Kernel.API.Services"/>\para y llamar a DoAction o DoFilter
            </summary>
        </member>
        <member name="M:Kernel.WebAPI.Dispatcher.#ctor(Kernel.API.Services,Microsoft.Extensions.Logging.ILogger{Kernel.WebAPI.Dispatcher})">
            <summary>
            Se encarga de comunicarse con el Kernel.Core utilizando la instancia de tipo <see cref="T:Kernel.API.Services"/>, y llamar a DoAction o DoFilter
            </summary>
            <param name="kernelAPIServices">Parámetro de tipo  <see cref="P:Kernel.WebAPI.Dispatcher.KernelAPI"/></param>
            <param name="logger">Parámetro de tipo <see cref="T:Microsoft.Extensions.Logging.ILogger`1"/></param>
        </member>
        <member name="M:Kernel.WebAPI.Dispatcher.DoEvent(Microsoft.AspNetCore.Http.HttpContext,Kernel.WebAPI.WebService,System.Object[])">
            <summary>
            Se encarga de comunicarse con el Kernel.Core utilizando la instancia de tipo <see cref="P:Kernel.WebAPI.Dispatcher.KernelAPI"/>, y llamar a DoAction o DoFilter
            </summary>
            <param name="context"></param>
            <param name="pluginService"></param>
            <param name="parameters"></param>
            <returns>true si no hay errores. false en caso contrario</returns>
        </member>
        <member name="T:Kernel.WebAPI.IKernelWebAPI">
            <summary>
            Interfaz derivada de IKernelApp para una aplicación de tipo servidor Web API
            </summary>
        </member>
        <member name="P:Kernel.WebAPI.IKernelWebAPI.MvcBuilder">
            <summary>
            Propiedad de tipo <see cref="T:Microsoft.Extensions.DependencyInjection.IMvcBuilder"/>
            </summary>
        </member>
        <member name="T:Kernel.WebAPI.IListenerHandler">
            <summary>
            Indica si la aplicación implementará el controlador <see cref="T:Kernel.WebAPI.Listener"/>
            </summary>
        </member>
        <member name="T:Kernel.WebAPI.Listener">
            <summary>
            Configura el pipeline del middleware
            </summary>
        </member>
        <member name="M:Kernel.WebAPI.Listener.#ctor(Microsoft.AspNetCore.Http.RequestDelegate,Kernel.Core.PluginsManager,Microsoft.Extensions.Logging.ILogger{Kernel.WebAPI.Listener},Kernel.WebAPI.Dispatcher,Kernel.Core.Security.NEUserManager,Kernel.Core.Security.JWTConfiguration,Microsoft.Extensions.Configuration.IConfiguration)">
            <summary>
            Configura el pipeline del middleware
            </summary>
            <param name="next"></param>
            <param name="pluginsManager"></param>
            <param name="logger"></param>
            <param name="webAPIDispatcher"></param>
            <param name="userManager"></param>
            <param name="jwtConfiguration"></param>
            <param name="configuration"></param>
        </member>
        <member name="M:Kernel.WebAPI.Listener.Invoke(Microsoft.AspNetCore.Http.HttpContext)">
            <summary>
            Se llama por el pipeline del middleware cuando se debe procesar un comando
            </summary>
            <param name="context"></param>
            <returns></returns>
        </member>
        <member name="M:Kernel.WebAPI.Listener.IsAuthorized(Microsoft.AspNetCore.Http.HttpContext,Kernel.WebAPI.WebService)">
            <summary>
            Verificar si el usuario tiene privilegios para este comando
            </summary>
            <param name="context"></param>
            <param name="pluginService"></param>
            <returns></returns>
        </member>
        <member name="M:Kernel.WebAPI.Listener.GetQueryString(System.Collections.Generic.IEnumerable{System.Object})">
            <summary>
            Devuelve un texto con el contenido de los parámetros
            </summary>
            <param name="parameters"></param>
            <returns></returns>
        </member>
        <member name="T:Kernel.WebAPI.ListenerExtensions">
            <summary>
            Extensión para la configuración del pipeline del middleware
            </summary>
        </member>
        <member name="M:Kernel.WebAPI.ListenerExtensions.UseWebAPIListener(Microsoft.AspNetCore.Builder.IApplicationBuilder)">
            <summary>
            Método utilizado por la aplicación para incluirse en el middleware pipeline
            </summary>
            <param name="app"></param>
            <returns>La instancia de tipo <see cref="T:Microsoft.AspNetCore.Builder.IApplicationBuilder"/></returns>
        </member>
        <member name="T:Kernel.WebAPI.PluginsManagerWebAPI">
            <summary>
            Clase derivada de <see cref="T:Kernel.Core.PluginsManager"/> para el manejo de servicios Web./>
            </summary>
        </member>
        <member name="P:Kernel.WebAPI.PluginsManagerWebAPI.PluginWebServices">
            <summary>
            Lista de tipo <see cref="T:Kernel.WebAPI.WebService"/>
            </summary>
        </member>
        <member name="M:Kernel.WebAPI.PluginsManagerWebAPI.#ctor(Microsoft.Extensions.Configuration.IConfiguration,Kernel.WebAPI.IKernelWebAPI,Microsoft.Extensions.Logging.ILogger{Kernel.WebAPI.PluginsManagerWebAPI})">
            <summary>
            Clase derivada de PluginsManager para el manejo de servicios Web
            </summary>
            <param name="configuration"></param>
            <param name="kernelWebAPI"></param>
            <param name="logger"></param>
        </member>
        <member name="M:Kernel.WebAPI.PluginsManagerWebAPI.AddWebService(Kernel.Plugins.Events.ModuleService,Kernel.Plugins.Events.IEvent)">
            <summary>
            Adiciona un servicio web API. La combinación {Module}/{Service} Debe ser única.
            </summary>
            <param name="moduleService">Nombre del módulo, nombre del servicio y permiso Id necesario del servicio Web API</param>
            <param name="pluginEvent">Parámetro de tipo <see cref="T:Kernel.Plugins.Events.IEvent"/> con la información del evento a utilizar</param>
        </member>
        <member name="M:Kernel.WebAPI.PluginsManagerWebAPI.AddWebService(Kernel.WebAPI.WebService)">
            <summary>
            Adiciona un servicio web API con la información suministrada por el parámetro pluginWebService
            </summary>
            <param name="pluginWebService">Parámetro de tipo <see cref="T:Kernel.WebAPI.WebService"/> que contiene la información necesaria para la 
            creación del servicio web</param>
        </member>
        <member name="M:Kernel.WebAPI.PluginsManagerWebAPI.ClearPlugins(System.String,System.Boolean)">
            <summary>
            Elimina los plugins con el nombre especificado
            </summary>
            <param name="pluginName">Nombre del plugin</param>
            <param name="clearLists">true si de deben liberar los recursos de la memoria</param>
        </member>
        <member name="T:Kernel.WebAPI.StartupWebAPI`1">
            <summary>
            Contiene las funciones básicas del kernel, que incluye la gestión de la seguridad de la aplicación, 
            la gestión de los plugins y la coordinación de las acciones del sistema. 
            Se deriva de <see cref="T:Kernel.Core.Startup`1"/> e implementa la interfaz <see cref="T:Kernel.WebAPI.IKernelWebAPI"/>
            </summary>
            <remarks>
            Constructor
            </remarks>
            <param name="configuration">Parámetro de tipo <see cref="T:Microsoft.Extensions.Configuration.IConfiguration"/></param>
        </member>
        <member name="M:Kernel.WebAPI.StartupWebAPI`1.#ctor(Microsoft.Extensions.Configuration.IConfiguration)">
            <summary>
            Contiene las funciones básicas del kernel, que incluye la gestión de la seguridad de la aplicación, 
            la gestión de los plugins y la coordinación de las acciones del sistema. 
            Se deriva de <see cref="T:Kernel.Core.Startup`1"/> e implementa la interfaz <see cref="T:Kernel.WebAPI.IKernelWebAPI"/>
            </summary>
            <remarks>
            Constructor
            </remarks>
            <param name="configuration">Parámetro de tipo <see cref="T:Microsoft.Extensions.Configuration.IConfiguration"/></param>
        </member>
        <member name="P:Kernel.WebAPI.StartupWebAPI`1.MvcBuilder">
            <summary>
            Instancia de tipo <see cref="T:Microsoft.Extensions.DependencyInjection.IMvcBuilder"/>
            </summary>
        </member>
        <member name="P:Kernel.WebAPI.StartupWebAPI`1.PluginsManager">
            <summary>
            Instancia de tipo <see cref="T:Kernel.Core.PluginsManager"/>
            </summary>
        </member>
        <member name="M:Kernel.WebAPI.StartupWebAPI`1.ConfigureServices(Microsoft.Extensions.DependencyInjection.IServiceCollection)">
            <summary>
            This method gets called by the runtime. Use this method to add services to the container.
            </summary>
            <param name="services"></param>
        </member>
        <member name="M:Kernel.WebAPI.StartupWebAPI`1.Configure(Microsoft.AspNetCore.Builder.IApplicationBuilder,Microsoft.AspNetCore.Hosting.IWebHostEnvironment,Microsoft.Extensions.Logging.ILogger{`0},Kernel.API.Services,Kernel.WebAPI.PluginsManagerWebAPI,Microsoft.Extensions.Hosting.IHostApplicationLifetime)">
            <summary>
            This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
            </summary>
            <param name="app"></param>
            <param name="env"></param>
            <param name="logger"></param>
            <param name="kernelAPIServices">Parámetro de tipo  <see cref="T:Kernel.API.Services"/></param>
            <param name="pluginsManagerWebAPI">Parámetro de tipo <see cref="T:Kernel.WebAPI.PluginsManagerWebAPI"/></param>
            <param name="applicationLifetime"></param>
        </member>
        <member name="T:Kernel.WebAPI.WebService">
            <summary>
            Clase derivada de <see cref="T:Kernel.Plugins.Events.Event"/>para manejo de servicios Web para los plugins, y 
            que implementa la interfaz <see cref="T:Kernel.Plugins.Events.IEventWebAPIService"/>
            </summary>
        </member>
        <member name="P:Kernel.WebAPI.WebService.ModuleService">
            <summary>
            Nombre del módulo, nombre del servicio y permiso Id necesario del servicio Web API
            </summary>
        </member>
        <member name="M:Kernel.WebAPI.WebService.#ctor(Kernel.Plugins.Events.ModuleService,Kernel.Plugins.Events.IEvent)">
            <summary>
            Clase para registrar y exponer los plugins (módulos) y sus servicios
            </summary>
            <param name="moduleService">Parámetro de tipo <see cref="P:Kernel.WebAPI.WebService.ModuleService"/> que tiene el nombre del módulo, 
            nombre del servicio y permiso Id necesario del servicio Web API</param>
            <param name="pluginEvent">Parámetro de tipo <see cref="T:Kernel.Plugins.Events.IEvent"/> con la información del evento a utilizar</param>
        </member>
        <member name="M:Kernel.WebAPI.WebService.#ctor(Kernel.WebAPI.WebService)">
            <summary>
            Clase para registrar y exponer los plugins (módulos) y sus servicios
            </summary>
            <param name="webServiceInfo">Construye el objeto con los valores de éste parámetro que es de tipo <see cref="T:Kernel.WebAPI.WebService"/></param>
        </member>
        <member name="T:Kernel.WebApp.IKernelWebApp">
            <summary>
            Interfaz derivada de IKernelApp para una aplicación de tipo Web
            </summary>
        </member>
        <member name="T:Kernel.WebApp.MenuInfo">
            <summary>
            Contiene la información necesaria para la creación de un menú. Extiende <see cref="T:Kernel.WebAPI.WebService"/>
            </summary>
        </member>
        <member name="P:Kernel.WebApp.MenuInfo.HRef">
            <summary>
            Dirección a la que se redirije cuando el usuario selecciona el menú
            </summary>
        </member>
        <member name="P:Kernel.WebApp.MenuInfo.Text">
            <summary>
            Texto a mostrar en el menú
            </summary>
        </member>
        <member name="P:Kernel.WebApp.MenuInfo.ClassInfo">
            <summary>
            Información de la clase que se utiliza en el menú
            </summary>
        </member>
        <member name="P:Kernel.WebApp.MenuInfo.Position">
            <summary>
            Posición del menú en la lista de menús.
            </summary>
        </member>
        <member name="M:Kernel.WebApp.MenuInfo.#ctor(Kernel.Plugins.Events.ModuleService,Kernel.Plugins.Events.IEvent,System.String,System.Double,System.String)">
            <summary>
            Contiene la información necesaria para la creación de un menú. Extiende <see cref="T:Kernel.WebAPI.WebService"/>
            </summary>
            <param name="moduleService">Parámetro de tipo <see cref="T:Kernel.Plugins.Events.ModuleService"/> que tiene el nombre del módulo, 
            nombre del servicio y permiso Id necesario del servicio Web API</param>
            <param name="pluginEvent">Parámetro de tipo <see cref="T:Kernel.Plugins.Events.IEvent"/> con la información del evento a utilizar</param>
            <param name="text">Texto a mostrar el menú</param>
            <param name="position">Posición del menú en la lista</param>
            <param name="classInfo">Información de la clase que se utiliza en el menú de tipo <see cref="P:Kernel.WebApp.MenuInfo.ClassInfo"/></param>
        </member>
        <member name="M:Kernel.WebApp.MenuInfo.#ctor(Kernel.WebApp.MenuInfo)">
            <summary>
            Contiene la información necesaria para la creación de un menú. Extiende <see cref="T:Kernel.WebAPI.WebService"/>
            </summary>
            <param name="menuInfo"></param>
        </member>
        <member name="T:Kernel.WebApp.PluginsManagerWebApp">
            <summary>
            Extensión de la clase <see cref="T:Kernel.Core.PluginsManager"/>/>
            </summary>
        </member>
        <member name="P:Kernel.WebApp.PluginsManagerWebApp.MenuInfos">
            <summary>
            Lista de tipo <see cref="T:Kernel.WebApp.MenuInfo"/>
            </summary>
        </member>
        <member name="M:Kernel.WebApp.PluginsManagerWebApp.#ctor(Microsoft.Extensions.Configuration.IConfiguration,Kernel.WebApp.IKernelWebApp,Microsoft.Extensions.Logging.ILogger{Kernel.WebApp.PluginsManagerWebApp},Kernel.API.HttpClientServices,Kernel.Core.Security.TokensManager)">
            <summary>
            Extensión de la clase <see cref="T:Kernel.Core.PluginsManager"/>/>
            </summary>
            <param name="configuration"></param>
            <param name="kernelWebApp"></param>
            <param name="logger"></param>
            <param name="kernelWebAppServices"></param>
            <param name="tokensManager"></param>
        </member>
        <member name="M:Kernel.WebApp.PluginsManagerWebApp.AddMenu(Kernel.Plugins.Events.ModuleService,Kernel.Plugins.Events.IEvent,System.String,System.Double,System.String)">
            <summary>
            Registra un menú para una aplicación IKernelWebApp. La combinación {Module}/{Service} Debe ser única.
            </summary>
            <param name="moduleService">Nombre del módulo, nombre del servicio y permiso Id necesario del servicio Web API</param>
            <param name="pluginEvent">Parámetro de tipo <see cref="T:Kernel.Plugins.Events.IEvent"/> con la información del evento a utilizar</param>
            <param name="text">Texto a mostrar en el menú</param>
            <param name="position">Posición del menú en la lista</param>
            <param name="classInfo">Información de la clase parael menú</param>
        </member>
        <member name="M:Kernel.WebApp.PluginsManagerWebApp.AddMenu(Kernel.WebApp.MenuInfo)">
            <summary>
            Registra un menú para una aplicación IKernelWebApp con la información suministrada por el parámetro menuInfo
            </summary>
            <param name="menuInfo">Parámetro de tipo <see cref="T:Kernel.WebApp.MenuInfo"/> que contiene la información necesaria para la 
            creación del menú</param>
        </member>
        <member name="M:Kernel.WebApp.PluginsManagerWebApp.RemoveMenu(Kernel.Plugins.Events.ModuleService,Kernel.Plugins.Events.EventType,System.String,System.String)">
            <summary>
            Elimina un menú para una aplicación IKernelWebApp
            </summary>
            <param name="moduleService">Nombre del módulo, nombre del servicio y permiso Id necesario del servicio Web API</param>
            <param name="eventType">Tipo de servicio que se provee (acción o filtro)</param>
            <param name="pluginModuleName">Si el plugin es de tipo módulo debe ser el mismo nombre del plugin. Cuando es una extensión de un plugin módulo, 
            el nombre del plugin que extiende</param>
            <param name="eventName">Nombre de la acción o filtro</param>
        </member>
        <member name="M:Kernel.WebApp.PluginsManagerWebApp.ClearPlugins(System.String,System.Boolean)">
            <summary>
            Elimina los plugins con el nombre especificado
            </summary>
            <param name="pluginName">Nombre del plugin</param>
            <param name="clearLists">true si de deben liberar los recursos de la memoria</param>
        </member>
        <member name="M:Kernel.WebApp.PluginsManagerWebApp.WepAPICallback``1(System.String,System.String,System.Object[])">
            <summary>
            Hace un HttpRequest con la dirección webAPIServer/action y los parámetros proporcionados
            </summary>
            <typeparam name="T">Tipo de dato esperado</typeparam>
            <param name="tokenGuid">Token de inicio de sesión. Para uso interno</param>
            <param name="action">Acción en formato Módulo/Servicio</param>
            <param name="args">Parámetros a enviar</param>
            <returns></returns>
        </member>
        <member name="M:Kernel.WebApp.PluginsManagerWebApp.ReleaseResources">
            <summary>
            Se encarga de limpiar las variables de sesión y liberar recursos de la memoria
            </summary>
        </member>
        <member name="M:Kernel.WebApp.PluginsManagerWebApp.OnReset">
            <summary>
            Método que se llama cuando el enlace con el servidor HttpClient se restaura
            </summary>
        </member>
        <member name="M:Kernel.WebApp.PluginsManagerWebApp.OnBreak(Polly.DelegateResult{System.Net.Http.HttpResponseMessage},System.TimeSpan)">
            <summary>
            Método que se llama cuando el enlace con el servidor HttpClient se rompe
            </summary>
            <param name="arg1"></param>
            <param name="arg2"></param>
        </member>
        <member name="M:Kernel.WebApp.PluginsManagerWebApp.OnRetry(Polly.DelegateResult{System.Net.Http.HttpResponseMessage},System.TimeSpan)">
            <summary>
            Método que se llama cuando hay reintentos para restablecer el enlace con el servidor HttpClient
            </summary>
            <param name="arg1"></param>
            <param name="arg2"></param>
        </member>
    </members>
</doc>
