Skip to content

Commit 22b1434

Browse files
committed
#281 Access to underlying service collection in builder
1 parent aa9ef1f commit 22b1434

File tree

3 files changed

+29
-4
lines changed

3 files changed

+29
-4
lines changed
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
{
2+
"Projects": [
3+
{
4+
"Name": "AWS.Messaging",
5+
"Type": "Patch",
6+
"ChangelogMessages": [
7+
"Add builder overload to modify underlying service collection on build"
8+
]
9+
}
10+
]
11+
}

src/AWS.Messaging/Configuration/IMessageBusBuilder.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,13 @@ public interface IMessageBusBuilder
101101
/// <returns></returns>
102102
IMessageBusBuilder AddAdditionalService(ServiceDescriptor serviceDescriptor);
103103

104+
/// <summary>
105+
/// Add additional services to the <see cref="IMessageBusBuilder"/>. This method is used for AWS.Messaging plugins to add services for messaging.
106+
/// </summary>
107+
/// <param name="action">Configuration action to perform against the service collection.</param>
108+
/// <returns></returns>
109+
IMessageBusBuilder AddAdditionalService(Action<IMessageConfiguration, IServiceCollection> action);
110+
104111
/// <summary>
105112
/// Enables the visibility of data messages in the logging framework, exception handling and other areas.
106113
/// If this is enabled, messages sent by this framework will be visible in plain text across the framework's components.

src/AWS.Messaging/Configuration/MessageBusBuilder.cs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public class MessageBusBuilder : IMessageBusBuilder
2929
{
3030
private static readonly ConcurrentDictionary<IServiceCollection, MessageConfiguration> _messageConfigurations = new();
3131
private readonly MessageConfiguration _messageConfiguration;
32-
private readonly IList<ServiceDescriptor> _additionalServices = new List<ServiceDescriptor>();
32+
private readonly IList<Action<IMessageConfiguration, IServiceCollection>> _additionalServices = new List<Action<IMessageConfiguration, IServiceCollection>>();
3333
private readonly IServiceCollection _serviceCollection;
3434

3535
/// <summary>
@@ -301,7 +301,14 @@ MessageEnvelope envelopeFactory()
301301
/// <inheritdoc/>
302302
public IMessageBusBuilder AddAdditionalService(ServiceDescriptor serviceDescriptor)
303303
{
304-
_additionalServices.Add(serviceDescriptor);
304+
_additionalServices.Add((_, services) => services.TryAdd(serviceDescriptor));
305+
return this;
306+
}
307+
308+
/// <inheritdoc/>
309+
public IMessageBusBuilder AddAdditionalService(Action<IMessageConfiguration, IServiceCollection> action)
310+
{
311+
_additionalServices.Add(action);
305312
return this;
306313
}
307314

@@ -410,9 +417,9 @@ internal void Build()
410417
}
411418
}
412419

413-
foreach (var service in _additionalServices)
420+
foreach (var action in _additionalServices)
414421
{
415-
_serviceCollection.TryAdd(service);
422+
action.Invoke(_messageConfiguration, _serviceCollection);
416423
}
417424
}
418425

0 commit comments

Comments
 (0)