public static IEnumerable <IServiceConfigurationMapping> Scan(this IServiceConfigurationScanner serviceConfigurationScanner, params Type[] types) { if (serviceConfigurationScanner == null) { throw new ArgumentNullException(nameof(serviceConfigurationScanner)); } return(serviceConfigurationScanner.Scan(types)); }
public static IEnumerable <IServiceConfigurationMapping> Scan(this IServiceConfigurationScanner serviceConfigurationScanner, Type type) { if (serviceConfigurationScanner == null) { throw new ArgumentNullException(nameof(serviceConfigurationScanner)); } if (type == null) { throw new ArgumentNullException(nameof(type)); } return(serviceConfigurationScanner.Scan(new[] { type })); }
public static IEnumerable <IServiceConfigurationMapping> Scan(this IServiceConfigurationScanner serviceConfigurationScanner, Assembly assembly) { if (serviceConfigurationScanner == null) { throw new ArgumentNullException(nameof(serviceConfigurationScanner)); } if (assembly == null) { throw new ArgumentNullException(nameof(assembly)); } return(serviceConfigurationScanner.Scan(new[] { assembly })); }
public static IEnumerable <IServiceConfigurationMapping> Scan(this IServiceConfigurationScanner serviceConfigurationScanner, IEnumerable <Assembly> assemblies) { if (serviceConfigurationScanner == null) { throw new ArgumentNullException(nameof(serviceConfigurationScanner)); } if (assemblies == null) { throw new ArgumentNullException(nameof(assemblies)); } assemblies = assemblies.ToArray(); if (assemblies.Any(assembly => assembly == null)) { throw new ArgumentException("The assembly-collection can not contain null-values.", nameof(assemblies)); } return(serviceConfigurationScanner.Scan(assemblies.SelectMany(assembly => assembly.GetTypes()))); }
/// <summary> /// Scan dependencies by service-configuration-attributes. /// </summary> /// <param name="services">The service-collection instance.</param> /// <param name="force">Forces adding of service-descriptors. If true "Add" is used, otherwise "TryAdd" is used.</param> /// <param name="scanner">The service-configuration-scanner to use.</param> /// <param name="patterns">Patterns for assembly-names to scan. Eg. "RegionOrebroLan", "RegionOrebroLan*", "RegionOrebroLan.*", "*". The default is <code>new[] {"RegionOrebroLan", "RegionOrebroLan.*"}</code>.</param> /// <returns></returns> public static IServiceCollection ScanDependencies(this IServiceCollection services, bool force, IServiceConfigurationScanner scanner, params string[] patterns) { if (services == null) { throw new ArgumentNullException(nameof(services)); } if (scanner == null) { throw new ArgumentNullException(nameof(scanner)); } if (!patterns.Any()) { patterns = new[] { "RegionOrebroLan", "RegionOrebroLan.*" } } ; var regexPatterns = patterns.Select(pattern => "^" + Regex.Escape(pattern).Replace("\\*", ".*") + "$"); foreach (var mapping in scanner.Scan(GetAssemblies(regexPatterns))) { var serviceDescriptor = new ServiceDescriptor(mapping.Configuration.ServiceType, mapping.Type, mapping.Configuration.Lifetime); if (force) { services.Add(serviceDescriptor); } else { services.TryAdd(serviceDescriptor); } } return(services); } #endregion }