diff --git a/src/ServiceModel/ServiceModel.Proxies/DependencyInjection/ServiceModelProxyBuilderExtensions.cs b/src/ServiceModel/ServiceModel.Proxies/DependencyInjection/ServiceModelProxyBuilderExtensions.cs
index f2cb779..341ae00 100644
--- a/src/ServiceModel/ServiceModel.Proxies/DependencyInjection/ServiceModelProxyBuilderExtensions.cs
+++ b/src/ServiceModel/ServiceModel.Proxies/DependencyInjection/ServiceModelProxyBuilderExtensions.cs
@@ -17,6 +17,23 @@ namespace Microsoft.Extensions.DependencyInjection
///
public static class ServiceModelProxyBuilderExtensions
{
+ ///
+ /// Configures the by customizing the used when creating the proxy.
+ ///
+ /// The .
+ /// A delegate to be used to configure the .
+ /// An instance of .
+ public static IServiceModelProxyBuilder Configure(this IServiceModelProxyBuilder builder, Action configuration)
+ {
+ _ = builder ?? throw new ArgumentNullException(nameof(builder));
+
+ _ = configuration ?? throw new ArgumentNullException(nameof(configuration));
+
+ builder.Services.Configure(builder.Name, configuration);
+
+ return builder;
+ }
+
///
/// Configures the to customize the when creating the proxy.
///
@@ -29,9 +46,7 @@ public static IServiceModelProxyBuilder ConfigureServiceEndpoint(this IServiceMo
_ = configuration ?? throw new ArgumentNullException(nameof(configuration));
- builder.Services.Configure(builder.Name, options => options.EndpointConfigurations.Add(configuration));
-
- return builder;
+ return Configure(builder, options => options.EndpointConfigurations.Add(configuration));
}
///
@@ -46,9 +61,7 @@ public static IServiceModelProxyBuilder SetBinding(this IServiceModelProxyBuilde
_ = binding ?? throw new ArgumentNullException(nameof(binding));
- builder.Services.Configure(builder.Name, options => options.BindingFactory = _ => binding);
-
- return builder;
+ return Configure(builder, options => options.BindingFactory = _ => binding);
}
///
@@ -63,9 +76,7 @@ public static IServiceModelProxyBuilder SetEndpointAddress(this IServiceModelPro
_ = endpoint ?? throw new ArgumentNullException(nameof(endpoint));
- builder.Services.Configure(builder.Name, options => options.EndpointAddressFactory = _ => new EndpointAddress(endpoint.ToString()));
-
- return builder;
+ return Configure(builder, options => options.EndpointAddressFactory = _ => new EndpointAddress(endpoint.ToString()));
}
///
diff --git a/tests/Tests.ServiceModel.Proxies/DependencyInjection/ServiceModelProxyBuilderExtensionsTests.cs b/tests/Tests.ServiceModel.Proxies/DependencyInjection/ServiceModelProxyBuilderExtensionsTests.cs
index b0c470c..3df20e5 100644
--- a/tests/Tests.ServiceModel.Proxies/DependencyInjection/ServiceModelProxyBuilderExtensionsTests.cs
+++ b/tests/Tests.ServiceModel.Proxies/DependencyInjection/ServiceModelProxyBuilderExtensionsTests.cs
@@ -9,6 +9,7 @@
using InsightArchitectures.Utilities.ServiceModel.Behaviors;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
+using Moq;
using NUnit.Framework;
namespace Tests.DependencyInjection
@@ -112,6 +113,21 @@ public void ConfigureServiceEndpoint_registers_customization(IServiceModelProxyB
Assert.That(options.EndpointConfigurations, Contains.Item(configuration));
}
+ [Test, CustomAutoData]
+ public void Configure_is_guarded_against_nulls(GuardClauseAssertion assertion) => assertion.Verify(typeof (ServiceModelProxyBuilderExtensions).GetMethod(nameof(ServiceModelProxyBuilderExtensions.Configure)));
+
+ [Test, CustomAutoData]
+ public void Configure_registers_configuration(IServiceModelProxyBuilder builder, Action configuration)
+ {
+ builder.Configure(configuration);
+
+ var sp = builder.Services.BuildServiceProvider();
+
+ var options = sp.GetRequiredService>().Get(builder.Name);
+
+ Mock.Get(configuration).Verify(p => p(options));
+ }
+
[Test]
[CustomInlineAutoData(3, new[] { typeof(ITestClient), typeof(ITestService), typeof(TestChannelFactoryProxyWrapper) })]
[CustomInlineAutoData(4, new[] { typeof(ITestClient), typeof(ITestService), typeof(TestClient), typeof(TestClientBaseProxyWrapper) })]