/// <summary> /// Scan the specified assemblies and registers all <see cref="IDependencyInjectionModule"/> /// implementations that are found with the <see cref="IScanningContext"/>. /// /// This method can be called multiple times. /// </summary> /// <param name="scanningContext">The <see cref="IScanningContext"/> to registers modules against.</param> /// <param name="assemblies">The assemblies to scan for.</param> /// <returns>The <paramref name="scanningContext"/>.</returns> public static IScanningContext ScanAssemblies(this IScanningContext scanningContext, params Assembly[] assemblies) { foreach (var assembly in assemblies) { if (assembly.IsDynamic) { continue; // throw an exception? log an error/warning? } var modulesTypeInfo = assembly .DefinedTypes .Where(t => t.IsClass && !t.IsAbstract) .KeepOnlyDependencyInjectionModules(); ; scanningContext.Register(modulesTypeInfo); } return(scanningContext); }
public static IScanningContext WithConfiguration(this IScanningContext scanningContext, IConfiguration configuration) { return(scanningContext.UseConfiguration(configuration)); }
/// <summary> /// Register the specified <see cref="IConfiguration"/>, used during modules instantiation. /// </summary> /// <param name="scanningContext">The scanning context to add <see cref="IConfiguration"/> to.</param> /// <param name="configuration">The <see cref="IConfiguration"/> to add.</param> /// <returns>The <paramref name="scanningContext"/>.</returns> public static IScanningContext UseConfiguration(this IScanningContext scanningContext, IConfiguration configuration) { return(scanningContext .ConfigureServices(services => services.TryAddSingleton(configuration)) ); }
public static IScanningContext FromAssemblyOf <T>(this IScanningContext scanningContext) { var assemblyToScan = typeof(T).Assembly; return(scanningContext.ScanAssemblies(assemblyToScan)); }