/// <summary> /// Add Scoped /// </summary> /// <param name="bag"></param> /// <param name="implementationFunc"></param> /// <typeparam name="TService"></typeparam> /// <typeparam name="TImplementation"></typeparam> /// <returns></returns> /// <exception cref="ArgumentNullException"></exception> public static R AddScoped <TService, TImplementation>(this R bag, Func <TImplementation> implementationFunc) { bag.CheckNull(nameof(bag)); implementationFunc.CheckNull(nameof(implementationFunc)); bag.Register(DependencyProxyDescriptor.CreateForServiceDelegate <TService, TImplementation>(implementationFunc, DependencyLifetimeType.Scoped)); return(bag); }
/// <summary> /// Add singleton /// </summary> /// <param name="bag"></param> /// <param name="implementationFunc"></param> /// <typeparam name="TService"></typeparam> /// <returns></returns> /// <exception cref="ArgumentNullException"></exception> public static R AddSingleton <TService>(this R bag, Func <object> implementationFunc) { bag.CheckNull(nameof(bag)); implementationFunc.CheckNull(nameof(implementationFunc)); bag.Register(DependencyProxyDescriptor.CreateForServiceDelegate <TService>(implementationFunc, DependencyLifetimeType.Singleton)); return(bag); }
/// <summary> /// Try add Scoped /// </summary> /// <param name="bag"></param> /// <param name="implementationFunc"></param> /// <typeparam name="TService"></typeparam> /// <exception cref="ArgumentNullException"></exception> public static void TryAddScoped <TService>(this R bag, Func <object> implementationFunc) { bag.CheckNull(nameof(bag)); implementationFunc.CheckNull(nameof(implementationFunc)); bag.TryRegister(DependencyProxyDescriptor.CreateForServiceDelegate <TService>(implementationFunc, DependencyLifetimeType.Scoped)); }
/// <summary> /// Try add Singleton /// </summary> /// <param name="bag"></param> /// <param name="implementationFunc"></param> /// <typeparam name="TService"></typeparam> /// <typeparam name="TImplementation"></typeparam> /// <exception cref="ArgumentNullException"></exception> public static void TryAddSingleton <TService, TImplementation>(this R bag, Func <TImplementation> implementationFunc) { bag.CheckNull(nameof(bag)); implementationFunc.CheckNull(nameof(implementationFunc)); bag.TryRegister(DependencyProxyDescriptor.CreateForServiceDelegate <TService, TImplementation>(implementationFunc, DependencyLifetimeType.Singleton)); }