66using AppCore . Diagnostics ;
77using AppCore . Extensions . DependencyInjection ;
88using AppCore . Extensions . DependencyInjection . Facilities ;
9+ using Microsoft . Extensions . DependencyModel ;
910
1011// ReSharper disable once CheckNamespace
1112namespace Microsoft . Extensions . DependencyInjection ;
@@ -24,14 +25,36 @@ public static class DependencyContextReflectionBuilderExtensions
2425 /// <exception cref="ArgumentNullException">Argument <paramref name="builder"/> is <c>null</c>. </exception>
2526 public static IServiceDescriptorReflectionBuilder DependencyContext (
2627 this IServiceDescriptorReflectionBuilder builder ,
27- Action < DependencyContextServiceDescriptorResolver > ? configure = null )
28+ Action < DependencyContextServiceDescriptorResolver > configure )
2829 {
2930 Ensure . Arg . NotNull ( builder ) ;
3031 Ensure . Arg . NotNull ( configure ) ;
3132
3233 return builder . AddResolver ( configure ) ;
3334 }
3435
36+ /// <summary>
37+ /// Adds service descriptors by reflection.
38+ /// </summary>
39+ /// <param name="builder">The <see cref="IServiceDescriptorReflectionBuilder"/>.</param>
40+ /// <param name="context">The <see cref="DependencyModel.DependencyContext"/> to search for service descriptors.</param>
41+ /// <param name="configure">The delegate to configure the <see cref="DependencyContextServiceDescriptorResolver"/>.</param>
42+ /// <returns>The <see cref="IServiceDescriptorReflectionBuilder"/>.</returns>
43+ /// <exception cref="ArgumentNullException">Argument <paramref name="builder"/> is <c>null</c>. </exception>
44+ public static IServiceDescriptorReflectionBuilder DependencyContext (
45+ this IServiceDescriptorReflectionBuilder builder ,
46+ DependencyContext ? context = null ,
47+ Action < DependencyContextServiceDescriptorResolver > ? configure = null )
48+ {
49+ return DependencyContext (
50+ builder ,
51+ c =>
52+ {
53+ c . Add ( context ?? DependencyModel . DependencyContext . Default ) ;
54+ configure ? . Invoke ( c ) ;
55+ } ) ;
56+ }
57+
3558 /// <summary>
3659 /// Adds facilities by reflection.
3760 /// </summary>
@@ -49,6 +72,28 @@ public static IFacilityReflectionBuilder DependencyContext(
4972 return builder . AddResolver ( configure ) ;
5073 }
5174
75+ /// <summary>
76+ /// Adds facilities by reflection.
77+ /// </summary>
78+ /// <param name="builder">The <see cref="IFacilityReflectionBuilder"/>.</param>
79+ /// <param name="context">The <see cref="DependencyModel.DependencyContext"/> to search for facilities.</param>
80+ /// <param name="configure">The delegate to configure the <see cref="DependencyContextResolver"/>.</param>
81+ /// <returns>The <see cref="IServiceDescriptorReflectionBuilder"/>.</returns>
82+ /// <exception cref="ArgumentNullException">Argument <paramref name="builder"/> or <paramref name="configure"/> is <c>null</c>. </exception>
83+ public static IFacilityReflectionBuilder DependencyContext (
84+ this IFacilityReflectionBuilder builder ,
85+ DependencyContext ? context = null ,
86+ Action < DependencyContextResolver > ? configure = null )
87+ {
88+ return DependencyContext (
89+ builder ,
90+ c =>
91+ {
92+ c . Add ( context ?? DependencyModel . DependencyContext . Default ) ;
93+ configure ? . Invoke ( c ) ;
94+ } ) ;
95+ }
96+
5297 /// <summary>
5398 /// Adds facility extensions by reflection.
5499 /// </summary>
@@ -65,4 +110,26 @@ public static IFacilityExtensionReflectionBuilder DependencyContext(
65110
66111 return builder . AddResolver ( configure ) ;
67112 }
113+
114+ /// <summary>
115+ /// Adds facility extensions by reflection.
116+ /// </summary>
117+ /// <param name="builder">The <see cref="IFacilityExtensionReflectionBuilder"/>.</param>
118+ /// <param name="context">The <see cref="DependencyModel.DependencyContext"/> to search for facilities.</param>
119+ /// <param name="configure">The delegate to configure the <see cref="DependencyContextResolver"/>.</param>
120+ /// <returns>The <see cref="IFacilityExtensionReflectionBuilder"/>.</returns>
121+ /// <exception cref="ArgumentNullException">Argument <paramref name="builder"/> or <paramref name="configure"/> is <c>null</c>. </exception>
122+ public static IFacilityExtensionReflectionBuilder DependencyContext (
123+ this IFacilityExtensionReflectionBuilder builder ,
124+ DependencyContext ? context = null ,
125+ Action < DependencyContextResolver > ? configure = null )
126+ {
127+ return DependencyContext (
128+ builder ,
129+ c =>
130+ {
131+ c . Add ( context ?? DependencyModel . DependencyContext . Default ) ;
132+ configure ? . Invoke ( c ) ;
133+ } ) ;
134+ }
68135}
0 commit comments