/// <summary> /// Register dependency as singleton (same instance will be used for all dependent objects /// for all requests) /// </summary> /// <param name="contract">Type of contract</param> /// <param name="implementation">Type of object which implements contact</param> /// <param name="lifetime">Life time of instance for implementation type</param> /// <returns>Current application IOC container</returns> public IIocContainer Register(Type contract, Type implementation, IocLifetimeEnum lifetime) { var lifestyle = MapLifetime(lifetime); InternalContainer.Register(contract, implementation, lifestyle); return(this); }
/// <summary> /// Register dependency as singleton (same instance will be used for all dependent objects) /// </summary> /// <param name="lifetime">Life time of instance for implementation type</param> /// <typeparam name="TContract">Type of contract</typeparam> /// <typeparam name="TImpl">Type of object which implements contact</typeparam> /// <returns>Current application IOC container</returns> public IIocContainer Register <TContract, TImpl>(IocLifetimeEnum lifetime) where TImpl : class, TContract where TContract : class { var style = MapLifetime(lifetime); InternalContainer.Register <TContract, TImpl>(style); return(this); }
private static Lifestyle MapLifetime(IocLifetimeEnum lifetime) { Lifestyle style; switch (lifetime) { case IocLifetimeEnum.Singleton: style = Lifestyle.Singleton; break; case IocLifetimeEnum.Transient: style = Lifestyle.Transient; break; case IocLifetimeEnum.Scoped: style = Lifestyle.Scoped; break; default: throw new ArgumentException("Unknown lifetime type"); } return(style); }