private Func <ILifeScope, object> MakeSingleton(IFactoryExpression factoryExpression) { var lifeScope = _singletonLifeScope.CreateNestedScope(); Func <object> singletonFactory = () => factoryExpression.Compile <object>().Invoke(lifeScope); var singleton = new LazyWithoutExceptionCaching <object>(singletonFactory); return(transientLifeScope => singleton.Value); }
public EasyCachingProviderFallbackDecorator( Func <TProvider> cachingProviderFactory, TProvider fallbackCachingProvider, Func <Exception, bool> exceptionFilter) { if (cachingProviderFactory == null) { throw new ArgumentNullException(nameof(cachingProviderFactory)); } _lazyCachingProvider = new LazyWithoutExceptionCaching <TProvider>(cachingProviderFactory); _exceptionFilter = exceptionFilter ?? (_ => true); _fallbackCachingProvider = fallbackCachingProvider ?? throw new ArgumentNullException(nameof(fallbackCachingProvider)); }
public EasyCachingProviderPolicyDecorator( Func <TProvider> cachingProviderFactory, Policy initPolicy, Policy syncExecutePolicy, AsyncPolicy asyncExecutePolicy) { if (cachingProviderFactory == null) { throw new ArgumentNullException(nameof(cachingProviderFactory)); } _lazyCachingProvider = new LazyWithoutExceptionCaching <TProvider>(cachingProviderFactory); _initPolicy = initPolicy ?? throw new ArgumentNullException(nameof(initPolicy)); _syncExecutePolicy = syncExecutePolicy ?? throw new ArgumentNullException(nameof(syncExecutePolicy)); _asyncExecutePolicy = asyncExecutePolicy ?? throw new ArgumentNullException(nameof(asyncExecutePolicy)); }
public EasyCachingBusPolicyDecorator( string name, Func <IEasyCachingBus> busFactory, Policy <IEasyCachingBus> initPolicy = null, Policy syncExecutePolicy = null, AsyncPolicy asyncExecutePolicy = null, AsyncPolicy subscribePolicy = null) { Name = name ?? throw new ArgumentNullException(nameof(name)); if (busFactory == null) { throw new ArgumentNullException(nameof(busFactory)); } _lazyBusProvider = new LazyWithoutExceptionCaching <IEasyCachingBus>(busFactory); _initPolicy = initPolicy; _syncExecutePolicy = syncExecutePolicy; _asyncExecutePolicy = asyncExecutePolicy; _subscribePolicy = subscribePolicy; }