public void RegisterServices(IServiceCollection services, IServiceRegistrationOptions options)
        {
            services
            .AddSingleton <IJsonSerializer, DefaultJsonSerializer>()
            .AddSingleton <IFileService, DefaultFileSystemService>()
            .AddSingleton <IRetryHandler, DefaultRetryHandler>()
            .AddSingleton(Switch.Create <CharacterType, Domains.Range>()
                          .CaseWhen(CharacterType.Lowercase, new Domains.Range(97, 122))
                          .CaseWhen(CharacterType.Uppercase, new Domains.Range(65, 90))
                          .CaseWhen(CharacterType.Numerics, new Domains.Range(48, 57))
                          .CaseWhen(CharacterType.Symbols, new Domains.Range(33, 47)))
            .AddSingleton <IInstanceServiceInjector, DefaultInstanceServiceInjector>()
            .AddSingleton <IIs, DefaultIs>()
            .AddSingleton(RandomNumberGenerator.Create())
            .AddSingleton <IRandomStringGenerator, DefaultRandomStringGenerator>()
            .AddSingleton <IHttpClientFactory, DefaultHttpClientFactory>()
            .AddSingleton <IGuidService, DefaultGuidService>()
            .AddSingleton <IMarkdownToHtmlService, DefaultMarkdownToHtmlService>()
            .AddSingleton <ISystemClock, SystemClock>()
            .AddSingleton <IClockProvider, DefaultClockProvider>()
            .AddSingleton(typeof(ISubject <>), typeof(Subject <>))
            .AddSingleton(RegisterRecyclableMemoryStreamManager)
            .AddSingleton <IHashingProvider, HashingProvider>()
            .AddSingleton <IClaimTypeValueConvertor, DefaultClaimTypeValueConvertor>()
            .AddSingleton <IModifierFlagPropertyService, DefaultModifierFlagPropertyService>()
            .AddSingleton <IDefaultValueSetterService, DefaultValueSetterService>()
            .AddSingleton <IJsonWebTokenService, DefaultJsonWebTokenService>()
            .AddSingleton <IMemoryStreamManager, DefaultMemoryStreamManager>()
            .AddSingleton <ICryptographyProvider, CryptographyProvider>();

            if (options.RegisterCryptographicProviders)
            {
                services
                .AddSingleton <IEncryptionProvider, EncryptionProvider>();
            }

            if (options.RegisterMediatorServices)
            {
                services
                .AddTransient(typeof(IPipelineBehavior <,>), typeof(DefaultValidationBehaviour <,>))
                .AddTransient <IMediatorService, DefaultMediatorService>();
            }

            if (options.RegisterMessagePackSerialisers)
            {
                services
                .AddSingleton <IMessagePackService, DefaultMessagePackService>();
            }

            if (options.RegisterAutoMappingProviders)
            {
                services
                .AddSingleton <IMapperProvider, MapperProvider>();
            }

            if (options.RegisterCacheProviders)
            {
                services
                .AddScoped(serviceProvider => serviceProvider.GetRequiredService <IHttpContextAccessor>().HttpContext.Session)
                .AddScoped <DefaultDistributedCacheService>()
                .AddScoped <DefaultSessionCacheService>()
                .AddScoped <ICacheProviderFactory, DefaultCacheProviderFactory>()
                .AddScoped <ICacheProvider, DefaultCacheProvider>();
            }

            if (options.RegisterExceptionHandlers)
            {
                services.AddSingleton <IExceptionHandlerFactory, DefaultExceptionHandlerFactory>();
            }

            if (options.ConfigureJsonSerializerOptions != null)
            {
                services.AddSingleton((serviceProvider) => options
                                      .ConfigureJsonSerializerOptions(serviceProvider));
            }
            else
            {
                services.AddSingleton(new JsonSerializerOptions());
            }

            if (options.ConfigureJsonFileCacheTrackerStoreOptions != null)
            {
                services
                .AddSingleton((serviceProvider) => options
                              .ConfigureJsonFileCacheTrackerStoreOptions(serviceProvider))
                .AddSingleton <ICacheTrackerStore, DefaultJsonFileCacheTrackerStore>()
                .AddSingleton <ICacheEntryTracker, DefaultCacheEntryTracker>();
            }


            if (options.ConfigureRetryHandlerOptions != null)
            {
                services.AddSingleton((serviceProvider) => options.ConfigureRetryHandlerOptions(serviceProvider));
            }
            else
            {
                services.AddSingleton(RetryHandler.DefaultOptions);
            }
        }
 public new static IFluentTryAsync Create()
 {
     return(new DefaultFluentTryAsync(new ConcurrentBag <Func <Task> >(), Switch.Create <Type, ExceptionHandler>()));
 }
 public static IFluentTry Create()
 {
     return(new DefaultFluentTry(new ConcurrentBag <Action>(), Switch.Create <Type, ExceptionHandler>()));
 }
Ejemplo n.º 4
0
 public DefaultHttpClientFactory(ISwitch <string, HttpClient> httpClientSwitch = null)
 {
     _httpClientSwitch = httpClientSwitch ?? Switch.Create <string, HttpClient>();
 }