44 lines
1.9 KiB
C#
44 lines
1.9 KiB
C#
using JiShe.CollectBus.Protocol.Interfaces;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using System.Reflection;
|
|
using Volo.Abp;
|
|
using Volo.Abp.Modularity;
|
|
|
|
namespace JiShe.CollectBus.Protocol
|
|
{
|
|
public class JiSheCollectBusProtocolT6452007Module : AbpModule
|
|
{
|
|
public override void ConfigureServices(ServiceConfigurationContext context)
|
|
{
|
|
context.Services.AddKeyedSingleton<IProtocolPlugin, T6452007ProtocolPlugin>(nameof(T6452007ProtocolPlugin));
|
|
//RegisterProtocolAnalysis(context.Services);
|
|
LoadAnalysisStrategy(context.Services);
|
|
}
|
|
|
|
public override async Task OnApplicationInitializationAsync(ApplicationInitializationContext context)
|
|
{
|
|
Console.WriteLine("StandardProtocolPlugin OnApplicationInitializationAsync");
|
|
var standardProtocol = context.ServiceProvider.GetRequiredKeyedService<IProtocolPlugin>(nameof(T6452007ProtocolPlugin));
|
|
await standardProtocol.LoadAsync();
|
|
}
|
|
|
|
public override void OnApplicationShutdown(ApplicationShutdownContext context)
|
|
{
|
|
Console.WriteLine("StandardProtocolPlugin OnApplicationShutdown");
|
|
base.OnApplicationShutdown(context);
|
|
}
|
|
|
|
public void LoadAnalysisStrategy(IServiceCollection services)
|
|
{
|
|
var assembly = Assembly.GetExecutingAssembly();
|
|
var analysisStrategyTypes = assembly.GetTypes().Where(t => !t.IsAbstract && !t.IsInterface && t.GetInterfaces().Any(i => i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IAnalysisStrategy<,>)));
|
|
foreach (var analysisStrategyType in analysisStrategyTypes)
|
|
{
|
|
var service = analysisStrategyType.GetInterfaces().First();
|
|
services.AddKeyedSingleton(service, analysisStrategyType.Name,analysisStrategyType);
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|