public static Cat Register(this Cat cat, Type from, Type to, Lifetime lifetime) { Func <Cat, Type[], object> factory = (_, arguments) => Create(_, to, arguments); cat.Register(new ServiceRegistry(from, lifetime, factory)); return(cat); }
public static Cat Register <TService>(this Cat cat, TService instance) { Func <Cat, Type[], object> factory = (_, arguments) => instance; cat.Register(new ServiceRegistry(typeof(TService), Lifetime.Root, factory)); return(cat); }
public static Cat Register <TFrom, TTo>(this Cat cat, Lifetime lifetime) where TTo : TFrom { Func <Cat, Type[], object> factory = (_, arguments) => Create(_, typeof(TTo), arguments); cat.Register(new ServiceRegistry(typeof(TFrom), lifetime, factory)); return(cat); }
public static Cat Register(this Cat cat, Assembly assembly) { var typedAttributes = from type in assembly.GetExportedTypes() let attribute = type.GetCustomAttribute <MapToAttribute>() where attribute != null select new { ServiceType = type, Attribute = attribute }; foreach (var typedAttribute in typedAttributes) { cat.Register(typedAttribute.Attribute.ServiceType, typedAttribute.ServiceType, typedAttribute.Attribute.Lifetime); } return(cat); }
public CatBuilder CreateBuilder(IServiceCollection services) { var cat = new Cat(); foreach (var service in services) { if (service.ImplementationFactory != null) { cat.Register(service.ServiceType, provider => service.ImplementationFactory(provider), service.Lifetime.AsCatLifetime()); } else if (service.ImplementationInstance != null) { cat.Register(service.ServiceType, service.ImplementationInstance); } else { cat.Register(service.ServiceType, service.ImplementationType, service.Lifetime.AsCatLifetime()); } } return(new CatBuilder(cat)); }
public static Cat Register <TService>(this Cat cat, Func <Cat, TService> factory, Lifetime lifetime) { cat.Register(new ServiceRegistry(typeof(TService), lifetime, (_, arguments) => factory(_))); return(cat); }
public static Cat Register(this Cat cat, Type serviceType, Func <Cat, object> factory, Lifetime lifetime) { cat.Register(new ServiceRegistry(serviceType, lifetime, (_, arguments) => factory(_))); return(cat); }
public static Cat Register <TFrom, TTo>(this Cat cat, Lifetime lifetime) where TTo : TFrom => cat.Register(typeof(TFrom), typeof(TTo), lifetime);
public CatBuilder Register(Assembly assembly) { _cat.Register(assembly); return(this); }
public CatBuilder(Cat cat) { _cat = cat; _cat.Register <IServiceScopeFactory>(c => new ServiceScopeFactory(c.CreateChild()), Lifetime.Transient); }