diff --git a/Directory.Build.props b/Directory.Build.props
index 7c9542e..00eb0ba 100644
--- a/Directory.Build.props
+++ b/Directory.Build.props
@@ -18,6 +18,6 @@
MIT
True
- 0.6.1
+ 0.6.2
\ No newline at end of file
diff --git a/samples/ShowcaseWebApi/Extensions/WebApplicationBuilderExtensions.cs b/samples/ShowcaseWebApi/Extensions/WebApplicationBuilderExtensions.cs
index e801f0d..fa86c54 100644
--- a/samples/ShowcaseWebApi/Extensions/WebApplicationBuilderExtensions.cs
+++ b/samples/ShowcaseWebApi/Extensions/WebApplicationBuilderExtensions.cs
@@ -87,7 +87,7 @@ public static WebApplicationBuilder AddWebServices(this WebApplicationBuilder bu
public static WebApplicationBuilder AddFeatures(this WebApplicationBuilder builder)
{
- builder.Services.AddModEndpointsFromAssembly(typeof(WebApplicationBuilderExtensions).Assembly);
+ builder.Services.AddModEndpointsFromAssemblyContaining();
builder.Services.AddValidatorsFromAssemblyContaining(includeInternalTypes: true);
return builder;
diff --git a/samples/ShowcaseWebApi/ShowcaseWebApi.csproj b/samples/ShowcaseWebApi/ShowcaseWebApi.csproj
index 80d1c4d..74fb83c 100644
--- a/samples/ShowcaseWebApi/ShowcaseWebApi.csproj
+++ b/samples/ShowcaseWebApi/ShowcaseWebApi.csproj
@@ -10,7 +10,7 @@
-
+
diff --git a/src/ModEndpoints.Core/DependencyInjectionExtensions.cs b/src/ModEndpoints.Core/DependencyInjectionExtensions.cs
index 817704d..12d9d5d 100644
--- a/src/ModEndpoints.Core/DependencyInjectionExtensions.cs
+++ b/src/ModEndpoints.Core/DependencyInjectionExtensions.cs
@@ -9,18 +9,28 @@
namespace ModEndpoints.Core;
public static class DependencyInjectionExtensions
{
- public static IServiceCollection AddModEndpointsFromAssemblyCore(
+ public static IServiceCollection AddModEndpointsCoreFromAssemblyContaining(
this IServiceCollection services,
- Assembly assembly)
+ Assembly assembly,
+ ServiceLifetime lifetime = ServiceLifetime.Transient)
+ {
+ return services.AddModEndpointsCoreFromAssembly(typeof(T).Assembly, lifetime);
+ }
+
+ public static IServiceCollection AddModEndpointsCoreFromAssembly(
+ this IServiceCollection services,
+ Assembly assembly,
+ ServiceLifetime lifetime = ServiceLifetime.Transient)
{
return services
- .AddRouteGroupsFromAssemblyCore(assembly)
- .AddEndpointsFromAssemblyCore(assembly);
+ .AddRouteGroupsCoreFromAssembly(assembly, lifetime)
+ .AddEndpointsCoreFromAssembly(assembly, lifetime);
}
- private static IServiceCollection AddRouteGroupsFromAssemblyCore(
+ private static IServiceCollection AddRouteGroupsCoreFromAssembly(
this IServiceCollection services,
- Assembly assembly)
+ Assembly assembly,
+ ServiceLifetime lifetime)
{
//Don't add RootRouteGroup, it's just a marker class to define root
//Normally its assembly won't be loaded with this method anyway but just in case
@@ -29,7 +39,7 @@ private static IServiceCollection AddRouteGroupsFromAssemblyCore(
.Where(type => type is { IsAbstract: false, IsInterface: false } &&
type.IsAssignableTo(typeof(IRouteGroupConfigurator)) &&
type != typeof(RootRouteGroup))
- .Select(type => ServiceDescriptor.KeyedTransient(typeof(IRouteGroupConfigurator), type, type))
+ .Select(type => ServiceDescriptor.DescribeKeyed(typeof(IRouteGroupConfigurator), type, type, lifetime))
.ToArray();
services.TryAddEnumerable(serviceDescriptors);
@@ -37,9 +47,10 @@ private static IServiceCollection AddRouteGroupsFromAssemblyCore(
return services;
}
- public static IServiceCollection AddEndpointsFromAssemblyCore(
+ public static IServiceCollection AddEndpointsCoreFromAssembly(
this IServiceCollection services,
- Assembly assembly)
+ Assembly assembly,
+ ServiceLifetime lifetime)
{
var endpointTypes = assembly
.DefinedTypes
@@ -49,7 +60,7 @@ public static IServiceCollection AddEndpointsFromAssemblyCore(
CheckServiceEndpointRegistrations(endpointTypes);
var serviceDescriptors = endpointTypes
- .Select(type => ServiceDescriptor.KeyedTransient(typeof(IEndpointConfigurator), type, type))
+ .Select(type => ServiceDescriptor.DescribeKeyed(typeof(IEndpointConfigurator), type, type, lifetime))
.ToArray();
services.TryAddEnumerable(serviceDescriptors);
diff --git a/src/ModEndpoints.RemoteServices/ModEndpoints.RemoteServices.csproj b/src/ModEndpoints.RemoteServices/ModEndpoints.RemoteServices.csproj
index 090162f..d9f9f94 100644
--- a/src/ModEndpoints.RemoteServices/ModEndpoints.RemoteServices.csproj
+++ b/src/ModEndpoints.RemoteServices/ModEndpoints.RemoteServices.csproj
@@ -22,7 +22,7 @@
-
+
diff --git a/src/ModEndpoints/DependencyInjectionExtensions.cs b/src/ModEndpoints/DependencyInjectionExtensions.cs
index 29cc983..990d00c 100644
--- a/src/ModEndpoints/DependencyInjectionExtensions.cs
+++ b/src/ModEndpoints/DependencyInjectionExtensions.cs
@@ -8,9 +8,17 @@
namespace ModEndpoints;
public static class DependencyInjectionExtensions
{
+ public static IServiceCollection AddModEndpointsFromAssemblyContaining(
+ this IServiceCollection services,
+ ServiceLifetime lifetime = ServiceLifetime.Transient)
+ {
+ return services.AddModEndpointsFromAssembly(typeof(T).Assembly, lifetime);
+ }
+
public static IServiceCollection AddModEndpointsFromAssembly(
this IServiceCollection services,
- Assembly assembly)
+ Assembly assembly,
+ ServiceLifetime lifetime = ServiceLifetime.Transient)
{
//WebResultEndpoint components
services.TryAddKeyedSingleton(
@@ -24,7 +32,7 @@ public static IServiceCollection AddModEndpointsFromAssembly(
services.TryAddSingleton();
services.AddHttpContextAccessor();
- return services.AddModEndpointsFromAssemblyCore(assembly);
+ return services.AddModEndpointsCoreFromAssembly(assembly, lifetime);
}
public static WebApplication MapModEndpoints(
diff --git a/src/ModEndpoints/ModEndpoints.csproj b/src/ModEndpoints/ModEndpoints.csproj
index 6d0d89b..c4a6464 100644
--- a/src/ModEndpoints/ModEndpoints.csproj
+++ b/src/ModEndpoints/ModEndpoints.csproj
@@ -21,8 +21,8 @@
-
-
+
+