Esempio n. 1
0
        public static IServiceContainerBuilder RegisterAssemblyModules(
            [NotNull] this IServiceContainerBuilder serviceContainerBuilder, params Assembly[] assemblies)
        {
            if (null == assemblies || assemblies.Length == 0)
            {
                assemblies = ReflectHelper.GetAssemblies();
            }

            foreach (var type in assemblies.
                     SelectMany(ass => ass.GetExportedTypes())
                     .Where(t => t.IsClass && !t.IsAbstract && typeof(IServiceContainerModule).IsAssignableFrom(t))
                     )
            {
                try
                {
                    if (Activator.CreateInstance(type) is IServiceContainerModule module)
                    {
                        module.ConfigureServices(serviceContainerBuilder);
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }
            }
            return(serviceContainerBuilder);
        }
    /// <summary>
    /// RegisterAssemblyTypes
    /// </summary>
    /// <param name="services">services</param>
    /// <param name="typesFilter">filter types to register</param>
    /// <param name="serviceLifetime">service lifetime</param>
    /// <param name="assemblies">assemblies</param>
    /// <returns>services</returns>
    public static IServiceCollection RegisterAssemblyTypes(this IServiceCollection services, Func <Type, bool>?typesFilter, ServiceLifetime serviceLifetime, params Assembly[] assemblies)
    {
        if (Guard.NotNull(assemblies, nameof(assemblies)).Length == 0)
        {
            assemblies = ReflectHelper.GetAssemblies();
        }

        var types = assemblies
                    .Select(assembly => assembly.GetTypes())
                    .SelectMany(t => t)
                    .Where(t => !t.IsAbstract)
        ;

        if (typesFilter != null)
        {
            types = types.Where(typesFilter);
        }

        foreach (var type in types)
        {
            services.Add(new ServiceDescriptor(type, type, serviceLifetime));
        }

        return(services);
    }
Esempio n. 3
0
        /// <summary>
        /// RegisterTypeAsImplementedInterfaces
        /// </summary>
        /// <param name="services">services</param>
        /// <param name="typesFilter">filter types to register</param>
        /// <param name="serviceLifetime">service lifetime</param>
        /// <param name="assemblies">assemblies</param>
        /// <returns>services</returns>
        public static IServiceContainerBuilder RegisterAssemblyTypesAsImplementedInterfaces([NotNull] this IServiceContainerBuilder services, Func <Type, bool> typesFilter, ServiceLifetime serviceLifetime, params Assembly[] assemblies)
        {
            if (assemblies == null || assemblies.Length == 0)
            {
                assemblies = ReflectHelper.GetAssemblies();
            }

            var types = assemblies
                        .Select(assembly => assembly.GetExportedTypes())
                        .SelectMany(t => t);

            if (typesFilter != null)
            {
                types = types.Where(typesFilter);
            }

            foreach (var type in types)
            {
                foreach (var implementedInterface in type.GetImplementedInterfaces())
                {
                    services.Add(new ServiceDefinition(implementedInterface, type, serviceLifetime));
                }
            }

            return(services);
        }
    /// <summary>
    /// RegisterAssemblyModules
    /// </summary>
    /// <param name="services">services</param>
    /// <param name="assemblies">assemblies</param>
    /// <returns>services</returns>
    public static IServiceCollection RegisterAssemblyModules(
        this IServiceCollection services, params Assembly[] assemblies)
    {
        Guard.NotNull(assemblies, nameof(assemblies));
        if (assemblies.Length == 0)
        {
            assemblies = ReflectHelper.GetAssemblies();
        }
        foreach (var type in assemblies.SelectMany(ass => ass.GetTypes())
                 .Where(t => t.IsClass && !t.IsAbstract && typeof(IServiceModule).IsAssignableFrom(t))
                 )
        {
            try
            {
                if (Activator.CreateInstance(type) is IServiceModule module)
                {
                    module.ConfigureServices(services);
                }
            }
            catch (Exception e)
            {
                InvokeHelper.OnInvokeException?.Invoke(e);
            }
        }

        return(services);
    }
Esempio n. 5
0
    /// <summary>
    /// RegisterTypeAsImplementedInterfaces
    /// </summary>
    /// <param name="services">services</param>
    /// <param name="typesFilter">filter types to register</param>
    /// <param name="interfaceTypeFilter">filter interface types to register</param>
    /// <param name="serviceLifetime">service lifetime</param>
    /// <param name="assemblies">assemblies</param>
    /// <returns>services</returns>
    public static IServiceContainerBuilder RegisterAssemblyTypesAsImplementedInterfaces(this IServiceContainerBuilder services, Func <Type, bool>?typesFilter, Func <Type, bool>?interfaceTypeFilter, ServiceLifetime serviceLifetime, params Assembly[] assemblies)
    {
        Guard.NotNull(assemblies, nameof(assemblies));
        if (assemblies.Length == 0)
        {
            assemblies = ReflectHelper.GetAssemblies();
        }

        var types = assemblies
                    .Select(assembly => assembly.GetTypes())
                    .SelectMany(t => t)
                    .Where(t => !t.IsAbstract)
        ;

        if (typesFilter != null)
        {
            types = types.Where(typesFilter);
        }

        foreach (var type in types)
        {
            foreach (var implementedInterface in type.GetImplementedInterfaces())
            {
                if (interfaceTypeFilter?.Invoke(implementedInterface) != false)
                {
                    services.Add(new ServiceDefinition(implementedInterface, type, serviceLifetime));
                }
            }
        }

        return(services);
    }
Esempio n. 6
0
        /// <summary>
        /// RegisterTypeAsImplementedInterfaces
        /// </summary>
        /// <param name="services">services</param>
        /// <param name="typesFilter">filter types to register</param>
        /// <param name="interfaceTypeFilter">filter interface types to register</param>
        /// <param name="serviceLifetime">service lifetime</param>
        /// <param name="assemblies">assemblies</param>
        /// <returns>services</returns>
        public static IServiceCollection RegisterAssemblyTypesAsImplementedInterfaces([NotNull] this IServiceCollection services, Func <Type, bool> typesFilter, Func <Type, bool> interfaceTypeFilter, ServiceLifetime serviceLifetime, params Assembly[] assemblies)
        {
            if (assemblies == null || assemblies.Length == 0)
            {
                assemblies = ReflectHelper.GetAssemblies();
            }

            var types = assemblies
                        .Select(assembly => assembly.GetTypes())
                        .SelectMany(t => t)
                        .Where(t => !t.IsAbstract)
            ;

            if (typesFilter != null)
            {
                types = types.Where(typesFilter);
            }

            foreach (var type in types)
            {
                foreach (var implementedInterface in type.GetImplementedInterfaces())
                {
                    if (interfaceTypeFilter?.Invoke(implementedInterface) != false)
                    {
                        services.Add(new ServiceDescriptor(implementedInterface, type, serviceLifetime));
                    }
                }
            }

            return(services);
        }
Esempio n. 7
0
        /// <summary>
        ///     Load mapping profiles
        /// </summary>
        /// <param name="assemblies">assemblies</param>
        public static void LoadMappingProfiles(params Assembly[] assemblies)
        {
            Guard.NotNull(assemblies, nameof(assemblies));
            if (assemblies.Length == 0)
            {
                assemblies = ReflectHelper.GetAssemblies();
            }

            LoadMappingProfiles(assemblies.SelectMany(ass => ass.GetExportedTypes()).ToArray());
        }
Esempio n. 8
0
        /// <summary>
        /// RegisterAssemblyTypes
        /// </summary>
        /// <param name="services">services</param>
        /// <param name="typesFilter">filter types to register</param>
        /// <param name="serviceLifetime">service lifetime</param>
        /// <param name="assemblies">assemblies</param>
        /// <returns>services</returns>
        public static IServiceCollection RegisterAssemblyTypes([NotNull] this IServiceCollection services, Func <Type, bool> typesFilter, ServiceLifetime serviceLifetime, params Assembly[] assemblies)
        {
            if (assemblies == null || assemblies.Length == 0)
            {
                assemblies = ReflectHelper.GetAssemblies();
            }

            var types = assemblies
                        .Select(assembly => assembly.GetExportedTypes())
                        .SelectMany(t => t);

            if (typesFilter != null)
            {
                types = types.Where(typesFilter);
            }

            foreach (var type in types)
            {
                services.Add(new ServiceDescriptor(type, type, serviceLifetime));
            }

            return(services);
        }