/// <summary>
        /// 注册单例服务
        /// </summary>
        /// <param name="services">服务集合</param>
        /// <param name="type">类型</param>
        /// <param name="injectionAttribute">注入特性</param>
        /// <param name="canInjectInterfaces">能被注册的接口</param>
        private static void AddSingleton(IServiceCollection services, Type type, InjectionAttribute injectionAttribute, IEnumerable <Type> canInjectInterfaces)
        {
            // 注册自己
            if (injectionAttribute.InjectionScope is InjectionScopeOptions.Self or InjectionScopeOptions.All)
            {
                switch (injectionAttribute.Injection)
                {
                case InjectionOptions.TryAdd:
                    services.TryAddSingleton(type);
                    break;

                case InjectionOptions.Add:
                    services.AddSingleton(type);
                    break;

                default: break;
                }
            }

            if (!canInjectInterfaces.Any())
            {
                return;
            }

            // 只注册第一个接口
            if (injectionAttribute.InjectionScope == InjectionScopeOptions.FirstOneInterface)
            {
                var firstInterface = canInjectInterfaces.First();

                switch (injectionAttribute.Injection)
                {
                case InjectionOptions.TryAdd:
                    services.TryAddSingleton(firstInterface, type);
                    break;

                case InjectionOptions.Add:
                    services.AddSingleton(firstInterface, type);
                    break;

                default: break;
                }
            }
            // 注册多个接口
            else if (injectionAttribute.InjectionScope is InjectionScopeOptions.ImplementedInterfaces or InjectionScopeOptions.All)
            {
                foreach (var inter in canInjectInterfaces)
                {
                    switch (injectionAttribute.Injection)
                    {
                    case InjectionOptions.TryAdd:
                        services.TryAddSingleton(inter, type);
                        break;

                    case InjectionOptions.Add:
                        services.AddSingleton(inter, type);
                        break;

                    default: break;
                    }
                }
            }
        }
 /// <summary>
 /// 注册类型
 /// </summary>
 /// <param name="services">服务</param>
 /// <param name="type">类型</param>
 /// <param name="injectionAttribute">注入特性</param>
 /// <param name="inter">接口</param>
 private static void RegisterType(IServiceCollection services, RegisterType registerType, Type type, InjectionAttribute injectionAttribute, Type inter = null)
 {
     if (registerType == Fur.DependencyInjection.RegisterType.Transient)
     {
         RegisterTransientType(services, type, injectionAttribute, inter);
     }
     if (registerType == Fur.DependencyInjection.RegisterType.Scoped)
     {
         RegisterScopeType(services, type, injectionAttribute, inter);
     }
     if (registerType == Fur.DependencyInjection.RegisterType.Singleton)
     {
         RegisterSingletonType(services, type, injectionAttribute, inter);
     }
 }
        /// <summary>
        /// 注册单例接口实例类型
        /// </summary>
        /// <param name="services">服务</param>
        /// <param name="type">类型</param>
        /// <param name="injectionAttribute">注入特性</param>
        /// <param name="inter">接口</param>
        private static void RegisterSingletonType(IServiceCollection services, Type type, InjectionAttribute injectionAttribute, Type inter = null)
        {
            switch (injectionAttribute.Injection)
            {
            case InjectionOptions.TryAdd:
                if (inter == null)
                {
                    services.TryAddSingleton(type);
                }
                else
                {
                    services.TryAddSingleton(inter, type);
                }
                break;

            case InjectionOptions.Add:
                if (inter == null)
                {
                    services.AddSingleton(type);
                }
                else
                {
                    services.AddSingleton(inter, type);
                }
                break;

            default: break;
            }
        }
        /// <summary>
        /// 注册服务
        /// </summary>
        /// <param name="services">服务集合</param>
        /// <param name="registerType">类型作用域</param>
        /// <param name="type">类型</param>
        /// <param name="injectionAttribute">注入特性</param>
        /// <param name="canInjectInterfaces">能被注册的接口</param>
        private static void RegisterService(IServiceCollection services, RegisterType registerType, Type type, InjectionAttribute injectionAttribute, IEnumerable <Type> canInjectInterfaces)
        {
            // 注册自己
            if (injectionAttribute.InjectionScope is InjectionScopeOptions.Self or InjectionScopeOptions.All)
            {
                RegisterType(services, registerType, type, injectionAttribute);
            }

            if (!canInjectInterfaces.Any())
            {
                return;
            }

            // 只注册第一个接口
            if (injectionAttribute.InjectionScope == InjectionScopeOptions.FirstOneInterface)
            {
                RegisterType(services, registerType, type, injectionAttribute, canInjectInterfaces.First());
            }
            // 注册多个接口
            else if (injectionAttribute.InjectionScope is InjectionScopeOptions.ImplementedInterfaces or InjectionScopeOptions.All)
            {
                foreach (var inter in canInjectInterfaces)
                {
                    RegisterType(services, registerType, type, injectionAttribute, inter);
                }
            }
        }