using JiShe.CollectBus.Protocol.Contracts.Interfaces; using Microsoft.Extensions.DependencyInjection; using System; using Volo.Abp; using Volo.Abp.Modularity; namespace JiShe.CollectBus.Protocol.Test { public class JiSheCollectBusTestProtocolModule : AbpModule { public override void ConfigureServices(ServiceConfigurationContext context) { Console.WriteLine("TestProtocolPlugin ConfigureServices"); context.Services.AddKeyedSingleton(nameof(TestProtocolPlugin)); } public override async Task OnApplicationInitializationAsync(ApplicationInitializationContext context) { Console.WriteLine("TestProtocolPlugin OnApplicationInitializationAsync"); var protocol = context.ServiceProvider.GetRequiredKeyedService(nameof(TestProtocolPlugin)); RemoveServiceAtRuntime(context.ServiceProvider); await protocol.LoadAsync(); } public override void OnApplicationShutdown(ApplicationShutdownContext context) { Console.WriteLine("TestProtocolPlugin OnApplicationShutdown"); base.OnApplicationShutdown(context); } public void RemoveServiceAtRuntime(IServiceProvider serviceProvider) { var services = serviceProvider.GetService(); services?.AddKeyedSingleton(nameof(TestProtocolPlugin)); //var services = (IServiceCollection)serviceProvider.GetService(typeof(IServiceCollection)); //var pluginService = serviceProvider.GetKeyedService(nameof(TestProtocolPlugin)); //if (services != null && pluginService!=null) //{ // services.Remove(pluginService); //} } } }