server-master/srcs/WingsAPI.Packets.Handling/PacketHandlingExtensions.cs
2026-02-10 18:21:30 +01:00

35 lines
No EOL
1.1 KiB
C#

using System;
using System.Reflection;
using Microsoft.Extensions.DependencyInjection;
using PhoenixLib.Extensions;
namespace WingsAPI.Packets.Handling
{
public static class PacketHandlingExtensions
{
public static void AddGamePacketHandlersInAssembly<T>(this IServiceCollection services)
{
services.AddGamePacketHandlersInAssembly(typeof(T).Assembly);
}
public static void AddGamePacketHandlersInAssembly(this IServiceCollection services, Assembly assembly)
{
Type[] types = assembly.GetTypesImplementingGenericClass(typeof(GenericGamePacketHandlerBase<>));
services.AddGamePacketHandlersInAssembly(types);
}
public static void AddGamePacketHandlersInAssembly(this IServiceCollection services, Type[] types)
{
foreach (Type type in types)
{
if (type.IsAbstract)
{
continue;
}
services.AddSingleton(new RegisteredPacketHandler { HandlerType = type });
services.AddTransient(type);
}
}
}
}