/// <summary> /// 注册 Librame 核心扩展构建器。 /// </summary> /// <param name="services">给定的 <see cref="IServiceCollection"/>。</param> /// <param name="setupOptions">给定可用于设置 <see cref="CoreExtensionOptions"/> 选项的动作(可选;为空则不设置)。</param> /// <param name="configuration">给定可用于 <see cref="CoreExtensionOptions"/> 选项的配置对象(可选;为空则不配置)。</param> /// <returns>返回 <see cref="CoreExtensionBuilder"/>。</returns> public static CoreExtensionBuilder AddLibrameCore(this IServiceCollection services, Action <CoreExtensionOptions>?setupOptions = null, IConfiguration?configuration = null) { // 添加依赖服务 if (!services.ContainsService <IMemoryCache>()) { services.AddMemoryCache(); } if (!services.ContainsService <IHttpClientFactory>()) { services.AddHttpClient(); } // 配置扩展选项 services.ConfigureExtensionOptions(setupOptions, configuration); // 创建扩展构建器 var builder = new CoreExtensionBuilder(services); // 注册扩展服务集合 return(builder .AddCommon() .AddCryptography() .AddNetwork() .AddStorage()); }
private static CoreExtensionBuilder AddNetwork(this CoreExtensionBuilder builder) { builder.TryAddOrReplaceService <IHttpClientInvokerFactory, InternalHttpClientInvokerFactory>(); builder.TryAddOrReplaceService <IHttpEndpointsInvoker, InternalHttpEndpointsInvoker>(); return(builder); }
private static CoreExtensionBuilder AddCommon(this CoreExtensionBuilder builder) { builder.TryAddOrReplaceService(typeof(ICloneable <>), typeof(Cloneable <>)); builder.TryAddOrReplaceService(typeof(IDecoratable <>), typeof(Decoratable <>)); return(builder); }
private static CoreExtensionBuilder AddStorage(this CoreExtensionBuilder builder) { builder.TryAddOrReplaceService <IStorableFileManager, InternalStorableFileManager>(); builder.TryAddOrReplaceService <IWebFilePermission, InternalWebFilePermission>(); builder.TryAddOrReplaceService <IWebStorableFileTransfer, InternalWebStorableFileTransfer>(); return(builder); }
private static CoreExtensionBuilder AddCryptography(this CoreExtensionBuilder builder) { builder.TryAddOrReplaceService <IAlgorithmParameterGenerator, InternalAlgorithmParameterGenerator>(); builder.TryAddOrReplaceService <IAsymmetricAlgorithm, InternalAsymmetricAlgorithm>(); builder.TryAddOrReplaceService <ISymmetricAlgorithm, InternalSymmetricAlgorithm>(); return(builder); }
static CoreExtensionBuilderHelper() { if (_builder is null) { var fileProvider = new PhysicalStorableFileProvider(PathExtensions.CurrentDirectoryWithoutDevelopmentRelativeSubpath); var services = new ServiceCollection(); _builder = services.AddLibrameCore(opts => { opts.WebFile.AccessToken = "Test access token."; opts.WebFile.UserName = "******"; opts.WebFile.Password = "******"; opts.WebFile.JwtToken = "Test jwt token."; opts.WebFile.CookieName = "Test cookie name."; opts.WebFile.FileProviders.Add(fileProvider); }); } if (_services is null) { _services = _builder.Services.BuildServiceProvider(); } }