25 lines
827 B
C#
25 lines
827 B
C#
|
using System.Reflection;
|
||
|
using Microsoft.Extensions.DependencyInjection;
|
||
|
using Tiger.Communication.Messages.Interfaces;
|
||
|
|
||
|
namespace Tiger.Utils;
|
||
|
|
||
|
public static class DependencyInjectionExtensions
|
||
|
{
|
||
|
public static void RegisterMessageEvents(this IServiceCollection services)
|
||
|
{
|
||
|
// Get the assembly you are interested in (this could be any Assembly)
|
||
|
var assembly = Assembly.GetExecutingAssembly();
|
||
|
|
||
|
// Get all types that implement IMessageEvent and are not abstract
|
||
|
var messageEventTypes = assembly.GetTypes()
|
||
|
.Where(t => t.GetInterfaces().Contains(typeof(IMessageEvent)) && !t.IsAbstract);
|
||
|
|
||
|
// Register each type with AddSingleton
|
||
|
foreach (var type in messageEventTypes)
|
||
|
{
|
||
|
services.AddSingleton(typeof(IMessageEvent), type);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
}
|