Skip to content

Commit dd6cec0

Browse files
committed
separate scanning from initialization
1 parent 5414455 commit dd6cec0

File tree

1 file changed

+16
-10
lines changed

1 file changed

+16
-10
lines changed

J4JMapLibrary/factory/ProjectionFactory.cs

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,12 @@ namespace J4JSoftware.J4JMapLibrary;
88
public class ProjectionFactory
99
{
1010
private readonly IConfiguration _config;
11+
private readonly List<Assembly> _assemblies = new();
12+
private readonly List<ProjectionTypeInfo> _projTypes = new();
1113
private readonly List<CredentialsTypeInfo> _credTypes = new();
1214
private readonly bool _includeDefaults;
1315
private readonly ILogger? _logger;
1416
private readonly ILoggerFactory? _loggerFactory;
15-
private readonly List<ProjectionTypeInfo> _projTypes = new();
1617

1718
public ProjectionFactory(
1819
IConfiguration config,
@@ -28,22 +29,27 @@ public ProjectionFactory(
2829
_includeDefaults = includeDefaults;
2930
}
3031

31-
public void ScanAssemblies( params Type[] types ) =>
32+
public ProjectionFactory ScanAssemblies( params Type[] types ) =>
3233
ScanAssemblies( types.Distinct().Select( t => t.Assembly ).ToArray() );
3334

34-
public void ScanAssemblies() => ScanAssemblies( Enumerable.Empty<Assembly>().ToArray() );
35+
public ProjectionFactory ScanAssemblies() => ScanAssemblies( Enumerable.Empty<Assembly>().ToArray() );
36+
public ProjectionFactory ScanAssemblies( params Assembly[] assemblies )
37+
{
38+
_assemblies.AddRange( assemblies );
39+
return this;
40+
}
3541

36-
public void ScanAssemblies( params Assembly[] assemblies )
42+
public bool InitializeFactory()
3743
{
38-
var toScan = assemblies.ToList();
44+
if (_includeDefaults)
45+
_assemblies.Add(typeof(ProjectionFactory).Assembly);
3946

40-
if( _includeDefaults )
41-
toScan.Add( typeof( ProjectionFactory ).Assembly );
47+
var toScan = _assemblies.Distinct().ToList();
4248

43-
toScan = toScan.Distinct().ToList();
49+
ProcessProjectionTypes(toScan);
50+
ProcessCredentialTypes(toScan);
4451

45-
ProcessProjectionTypes( toScan );
46-
ProcessCredentialTypes( toScan );
52+
return _projTypes.Any();
4753
}
4854

4955
private void ProcessProjectionTypes( List<Assembly> toScan )

0 commit comments

Comments
 (0)