/// <summary>
        /// 注入用户验证授权对象
        /// </summary>
        /// <typeparam name="TUserManager"></typeparam>
        /// <param name="builder"></param>
        /// <returns></returns>
        public static NetCoreFrameIdentityBuilder AddFrameUserManager <TUserManager>(this NetCoreFrameIdentityBuilder builder)
            where TUserManager : class
        {
            var sysUserInfoManagerType = typeof(SysUserInfoManager <>).MakeGenericType(builder.UserType);
            var userManagerType        = typeof(UserManager <>).MakeGenericType(builder.UserType);

            builder.Services.AddScoped(sysUserInfoManagerType, services => services.GetRequiredService(userManagerType));
            builder.AddUserManager <TUserManager>();
            return(builder);
        }
        /// <summary>
        /// 注入用户对象仓储对象
        /// </summary>
        /// <typeparam name="TUserStore"></typeparam>
        /// <param name="builder"></param>
        /// <returns></returns>
        public static NetCoreFrameIdentityBuilder AddFrameUserStore <TUserStore>(this NetCoreFrameIdentityBuilder builder)
            where TUserStore : class
        {
            var type = typeof(TUserStore);
            var sysUserInfoStoreType = typeof(SysUserInfoStore <>).MakeGenericType(builder.UserType);
            var userStoreType        = typeof(IUserStore <>).MakeGenericType(builder.UserType);

            builder.Services.AddScoped(type);
            builder.Services.AddScoped(sysUserInfoStoreType, services => services.GetRequiredService(type));
            builder.Services.AddScoped(userStoreType, services => services.GetRequiredService(type));
            return(builder);
        }
        /// <summary>
        /// 注入服务授权验证
        /// </summary>
        /// <typeparam name="TPermissionChecker"></typeparam>
        /// <param name="builder"></param>
        /// <returns></returns>
        public static NetCoreFrameIdentityBuilder AddPermissionChecker <TPermissionChecker>(this NetCoreFrameIdentityBuilder builder)
            where TPermissionChecker : class
        {
            var type = typeof(TPermissionChecker);
            //var checkerType = typeof(PermissionCheckerCore<,>).MakeGenericType(builder.RoleType, builder.UserType);
            var checkerType = typeof(PermissionCheckerCore <>).MakeGenericType(builder.UserType);

            builder.Services.AddScoped(type);
            builder.Services.AddScoped(checkerType, provider => provider.GetService(type));
            builder.Services.AddScoped(typeof(IPermissionChecker), provider => provider.GetService(type));
            return(builder);
        }
        /// <summary>
        /// 注入创建授权凭证对象
        /// </summary>
        /// <typeparam name="TUserClaimsPrincipalFactory"></typeparam>
        /// <param name="builder"></param>
        /// <returns></returns>
        public static NetCoreFrameIdentityBuilder AddFrameUserClaimsPrincipalFactory <TUserClaimsPrincipalFactory>(this NetCoreFrameIdentityBuilder builder)
            where TUserClaimsPrincipalFactory : class
        {
            var type = typeof(TUserClaimsPrincipalFactory);

            builder.Services.AddScoped(typeof(UserClaimsPrincipalFactory <>).MakeGenericType(builder.UserType), services => services.GetRequiredService(type));
            builder.Services.AddScoped(typeof(SysUserClaimsPrincipalFactory <>).MakeGenericType(builder.UserType), services => services.GetRequiredService(type));
            builder.Services.AddScoped(typeof(IUserClaimsPrincipalFactory <>).MakeGenericType(builder.UserType), services => services.GetRequiredService(type));
            builder.Services.AddScoped(type);
            return(builder);
        }