Ejemplo n.º 1
0
        private static void ConvenientRegisterFor <TDenpendencyInterface>(IServiceCollection services, RegisteType registeType, Type[] allTypes, params string[] suffixList)
        {
            var scopedDependency = allTypes
                                   .Where(t => !t.GetTypeInfo().IsAbstract&& t.GetInterfaces().SingleOrDefault(x => x == typeof(TDenpendencyInterface)) != null)
                                   .ToList();

            foreach (var item in scopedDependency)
            {
                var typeName = item.GetTypeInfo().Name;
                suffixList.ToList().ForEach(suffix =>
                {
                    var interfaceList = item.GetInterfaces()
                                        .Where(x => x.GetTypeInfo().Name.EndsWith(suffix) && !x.GetTypeInfo().Name.Contains("Base"))
                                        .Except(item.BaseType?.GetInterfaces())
                                        .ToList();

                    switch (registeType)
                    {
                    case RegisteType.Scoped:
                        foreach (var interfaceType in interfaceList)
                        {
                            services.AddScoped(interfaceType, item);
                        }
                        services.AddScoped(item);
                        break;

                    case RegisteType.Signalton:
                        foreach (var interfaceType in interfaceList)
                        {
                            services.AddSingleton(interfaceType, item);
                        }
                        services.AddSingleton(item);
                        break;

                    case RegisteType.Transist:
                        foreach (var interfaceType in interfaceList)
                        {
                            services.AddTransient(interfaceType, item);
                        }
                        services.AddTransient(item);
                        break;

                    default:
                        throw new ArgumentOutOfRangeException(nameof(registeType), registeType, null);
                    }
                });
            }
        }
Ejemplo n.º 2
0
        private static void ConvenientRegisterSelf <TDenpendencyInterface>(IServiceCollection services, RegisteType registeType, Type[] allTypes)
        {
            var scopedDependency = allTypes
                                   .Where(t => !t.GetTypeInfo().IsAbstract&& t.GetInterfaces().SingleOrDefault(x => x == typeof(TDenpendencyInterface)) != null)
                                   .ToList();

            foreach (var item in scopedDependency)
            {
                var typeName = item.GetTypeInfo().Name;

                switch (registeType)
                {
                case RegisteType.Scoped:
                    services.AddScoped(item);
                    break;

                case RegisteType.Signalton:
                    services.AddSingleton(item);
                    break;

                case RegisteType.Transist:
                    services.AddTransient(item);
                    break;

                default:
                    throw new ArgumentOutOfRangeException(nameof(registeType), registeType, null);
                }
            }
        }