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