@@ -10,31 +10,28 @@ namespace Gridify;
10
10
public static class DependencyInjectionExtensions
11
11
{
12
12
/// <summary>
13
- /// Automatically scans an assembly for classes that inherit from GridifyMapper<T> and registers them in the Dependency Injection container.
13
+ /// Automatically scans an assembly for classes that inherit from GridifyMapper<T> and registers them in the Dependency Injection container.
14
14
/// </summary>
15
15
/// <param name="services">The IServiceCollection to which the mappers should be added.</param>
16
16
/// <param name="assembly">The assembly to scan for GridifyMapper implementations.</param>
17
17
/// <param name="lifetime">The service lifetime for the registered mappers (default is Singleton).</param>
18
18
public static IServiceCollection AddGridifyMappers ( this IServiceCollection services , Assembly assembly ,
19
- ServiceLifetime lifetime = ServiceLifetime . Singleton )
19
+ ServiceLifetime lifetime = ServiceLifetime . Singleton )
20
20
{
21
- var mapperType = typeof ( GridifyMapper < > ) ;
22
-
23
- var mapperTypes = assembly . GetTypes ( )
21
+ var targetTypes = assembly . GetTypes ( )
24
22
. Where ( type =>
25
- type is { IsAbstract : false , IsGenericTypeDefinition : false , BaseType . IsGenericType : true } &&
26
- type . BaseType . GetGenericTypeDefinition ( ) == mapperType ) ;
23
+ type is { IsAbstract : false , IsGenericTypeDefinition : false , BaseType . IsGenericType : true , BaseType . Namespace : nameof ( Gridify ) } &&
24
+ type . BaseType . GetGenericTypeDefinition ( ) == typeof ( GridifyMapper < > ) ) ;
27
25
28
- foreach ( var mapper in mapperTypes )
26
+ foreach ( var type in targetTypes )
29
27
{
30
- var genericArguments = mapper . BaseType ? . GetGenericArguments ( ) ;
31
- if ( genericArguments is { Length : 1 } )
32
- {
33
- var targetType = genericArguments [ 0 ] ;
34
- var interfaceType = typeof ( IGridifyMapper < > ) . MakeGenericType ( targetType ) ;
35
- services . Add ( new ServiceDescriptor ( interfaceType , mapper , lifetime ) ) ;
36
- }
28
+ var genericArguments = type . BaseType ? . GetGenericArguments ( ) ;
29
+ if ( genericArguments is not { Length : 1 } ) continue ;
30
+ var targetType = genericArguments [ 0 ] ;
31
+ var interfaceType = typeof ( IGridifyMapper < > ) . MakeGenericType ( targetType ) ;
32
+ services . Add ( new ServiceDescriptor ( interfaceType , type , lifetime ) ) ;
37
33
}
34
+
38
35
return services ;
39
36
}
40
37
}
0 commit comments