From d419d39fab635995ac0237520c72564a518f905e Mon Sep 17 00:00:00 2001 From: Rutherther Date: Mon, 13 Feb 2023 18:20:33 +0100 Subject: [PATCH] fix(core): allow adding multiple responder types with IRawPacketResponder and IEveryPacketResponder --- .../Extensions/ServiceCollectionExtensions.cs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/Core/NosSmooth.Core/Extensions/ServiceCollectionExtensions.cs b/Core/NosSmooth.Core/Extensions/ServiceCollectionExtensions.cs index 02b7a9bf54af6896d4810b4d9b52ae5223360ce5..9aa8ca94915dabdb6ead5b2f26aad172f54fc9ff 100644 --- a/Core/NosSmooth.Core/Extensions/ServiceCollectionExtensions.cs +++ b/Core/NosSmooth.Core/Extensions/ServiceCollectionExtensions.cs @@ -116,24 +116,28 @@ public static class ServiceCollectionExtensions return serviceCollection; } + bool addedResponder = false; + if (responderType.GetInterfaces().Any(i => i == typeof(IRawPacketResponder))) { - return serviceCollection.AddScoped(typeof(IRawPacketResponder), responderType); + addedResponder = true; + serviceCollection.AddScoped(typeof(IRawPacketResponder), responderType); } if (responderType.GetInterfaces().Any(i => i == typeof(IEveryPacketResponder))) { - return serviceCollection.AddScoped(typeof(IEveryPacketResponder), responderType); + addedResponder = true; + serviceCollection.AddScoped(typeof(IEveryPacketResponder), responderType); } - if (!responderType.GetInterfaces().Any + if (!addedResponder && !responderType.GetInterfaces().Any ( i => i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IPacketResponder<>) )) { throw new ArgumentException ( - $"{nameof(responderType)} should implement IPacketResponder.", + $"{nameof(responderType)} should implement IPacketResponder or IRawPacketResponder or IEveryPacketResponder.", nameof(responderType) ); }