public static IHummingbirdHostBuilder AddCache(this IHummingbirdHostBuilder hostBuilder, Action <IHummingbirdCacheConfig> setupOption = null)
        {
            var config = new HummingbirdCacheConfig();

            if (setupOption != null)
            {
                setupOption(config);
            }
            hostBuilder.Services.AddSingleton(typeof(IHummingbirdCacheConfig), config);
            hostBuilder.Services.AddSingleton(typeof(ICacheManager <int>), sp =>
            {
                return(GetCacheManager <int>(sp, config.ConfigName));
            });
            hostBuilder.Services.AddSingleton(typeof(ICacheManager <long>), sp =>
            {
                return(GetCacheManager <int>(sp, config.ConfigName));
            });
            hostBuilder.Services.AddSingleton(typeof(ICacheManager <string>), sp =>
            {
                return(GetCacheManager <string>(sp, config.ConfigName));
            });
            hostBuilder.Services.AddSingleton(typeof(ICacheManager <bool>), sp =>
            {
                return(GetCacheManager <bool>(sp, config.ConfigName));
            });
            hostBuilder.Services.AddSingleton(typeof(ICacheManager <object>), sp =>
            {
                return(GetCacheManager <object>(sp, config.ConfigName));
            });

            hostBuilder.Services.AddSingleton(typeof(IHummingbirdCache <int>), sp => {
                var cacheManager = sp.GetRequiredService <ICacheManager <int> >();
                return(new Hummingbird.Extensions.Cache.HummingbirdCacheManagerCache <int>(cacheManager, config.CacheRegion));
            });
            hostBuilder.Services.AddSingleton(typeof(IHummingbirdCache <long>), sp => {
                var cacheManager = sp.GetRequiredService <ICacheManager <long> >();
                return(new Hummingbird.Extensions.Cache.HummingbirdCacheManagerCache <long>(cacheManager, config.CacheRegion));
            });
            hostBuilder.Services.AddSingleton(typeof(IHummingbirdCache <string>), sp => {
                var cacheManager = sp.GetRequiredService <ICacheManager <string> >();
                return(new Hummingbird.Extensions.Cache.HummingbirdCacheManagerCache <string>(cacheManager, config.CacheRegion));
            });
            hostBuilder.Services.AddSingleton(typeof(IHummingbirdCache <bool>), sp => {
                var cacheManager = sp.GetRequiredService <ICacheManager <bool> >();
                return(new Hummingbird.Extensions.Cache.HummingbirdCacheManagerCache <bool>(cacheManager, config.CacheRegion));
            });
            hostBuilder.Services.AddSingleton(typeof(IHummingbirdCache <object>), sp => {
                var cacheManager = sp.GetRequiredService <ICacheManager <object> >();
                return(new Hummingbird.Extensions.Cache.HummingbirdCacheManagerCache <object>(cacheManager, config.CacheRegion));
            });
            return(hostBuilder);
        }
Exemplo n.º 2
0
        public static IHummingbirdHostBuilder AddCache(this IHummingbirdHostBuilder hostBuilder, Action <IHummingbirdCacheConfig> setupOption = null)
        {
            var config = new HummingbirdCacheConfig();

            if (setupOption != null)
            {
                setupOption(config);
            }
            hostBuilder.Services.AddSingleton(typeof(IHummingbirdCacheConfig), config);
            hostBuilder.Services.AddSingleton(typeof(ICacheManager <object>), sp =>
            {
                var Configuration      = sp.GetRequiredService <IConfiguration>();
                var cacheConfiguration = Configuration.GetCacheConfiguration(config.ConfigName).Builder.Build();
                var cacheManager       = CacheFactory.FromConfiguration <object>(config.ConfigName, cacheConfiguration);



                return(cacheManager);
            });
            hostBuilder.Services.AddSingleton(typeof(IHummingbirdCache <object>), typeof(HummingbirdCacheManagerCache <object>));
            hostBuilder.Services.AddSingleton(typeof(IHummingbirdCache <>), typeof(HummingbirdCacheManagerCache <>));
            return(hostBuilder);
        }