예제 #1
0
 /// <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);
 }
예제 #2
0
 public static IScanningContext WithConfiguration(this IScanningContext scanningContext, IConfiguration configuration)
 {
     return(scanningContext.UseConfiguration(configuration));
 }
예제 #3
0
 /// <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))
            );
 }
예제 #4
0
        public static IScanningContext FromAssemblyOf <T>(this IScanningContext scanningContext)
        {
            var assemblyToScan = typeof(T).Assembly;

            return(scanningContext.ScanAssemblies(assemblyToScan));
        }