From 22b1434fc97084a3e258d641c11da978ea59bbf9 Mon Sep 17 00:00:00 2001 From: Richard Pringle Date: Mon, 25 Aug 2025 15:51:32 +0800 Subject: [PATCH] #281 Access to underlying service collection in builder --- .../55b720e8-c5d2-41e0-abda-658b2f39f77e.json | 11 +++++++++++ .../Configuration/IMessageBusBuilder.cs | 7 +++++++ .../Configuration/MessageBusBuilder.cs | 15 +++++++++++---- 3 files changed, 29 insertions(+), 4 deletions(-) create mode 100644 .autover/changes/55b720e8-c5d2-41e0-abda-658b2f39f77e.json diff --git a/.autover/changes/55b720e8-c5d2-41e0-abda-658b2f39f77e.json b/.autover/changes/55b720e8-c5d2-41e0-abda-658b2f39f77e.json new file mode 100644 index 00000000..affa89cf --- /dev/null +++ b/.autover/changes/55b720e8-c5d2-41e0-abda-658b2f39f77e.json @@ -0,0 +1,11 @@ +{ + "Projects": [ + { + "Name": "AWS.Messaging", + "Type": "Patch", + "ChangelogMessages": [ + "Add builder overload to modify underlying service collection on build" + ] + } + ] +} \ No newline at end of file diff --git a/src/AWS.Messaging/Configuration/IMessageBusBuilder.cs b/src/AWS.Messaging/Configuration/IMessageBusBuilder.cs index b377f874..1b46cc5d 100644 --- a/src/AWS.Messaging/Configuration/IMessageBusBuilder.cs +++ b/src/AWS.Messaging/Configuration/IMessageBusBuilder.cs @@ -101,6 +101,13 @@ public interface IMessageBusBuilder /// IMessageBusBuilder AddAdditionalService(ServiceDescriptor serviceDescriptor); + /// + /// Add additional services to the . This method is used for AWS.Messaging plugins to add services for messaging. + /// + /// Configuration action to perform against the service collection. + /// + IMessageBusBuilder AddAdditionalService(Action action); + /// /// Enables the visibility of data messages in the logging framework, exception handling and other areas. /// If this is enabled, messages sent by this framework will be visible in plain text across the framework's components. diff --git a/src/AWS.Messaging/Configuration/MessageBusBuilder.cs b/src/AWS.Messaging/Configuration/MessageBusBuilder.cs index a87a6cca..e51d2097 100644 --- a/src/AWS.Messaging/Configuration/MessageBusBuilder.cs +++ b/src/AWS.Messaging/Configuration/MessageBusBuilder.cs @@ -29,7 +29,7 @@ public class MessageBusBuilder : IMessageBusBuilder { private static readonly ConcurrentDictionary _messageConfigurations = new(); private readonly MessageConfiguration _messageConfiguration; - private readonly IList _additionalServices = new List(); + private readonly IList> _additionalServices = new List>(); private readonly IServiceCollection _serviceCollection; /// @@ -301,7 +301,14 @@ MessageEnvelope envelopeFactory() /// public IMessageBusBuilder AddAdditionalService(ServiceDescriptor serviceDescriptor) { - _additionalServices.Add(serviceDescriptor); + _additionalServices.Add((_, services) => services.TryAdd(serviceDescriptor)); + return this; + } + + /// + public IMessageBusBuilder AddAdditionalService(Action action) + { + _additionalServices.Add(action); return this; } @@ -410,9 +417,9 @@ internal void Build() } } - foreach (var service in _additionalServices) + foreach (var action in _additionalServices) { - _serviceCollection.TryAdd(service); + action.Invoke(_messageConfiguration, _serviceCollection); } }