public ITypeRegistrationOptions <TConcrete> Singleton <TConcrete>() { Model = new DependencyFactoryModel <TConcrete> { Lifetime = DependencyLifetime.Singleton }; return(new TypeRegistrationOptions <TConcrete>(this)); }
public void Register(DependencyFactoryModel registration) { var genericTypeDef = registration.GetType().GetGenericTypeDefinition(); var args = registration.GetType().GenericTypeArguments; var allArgs = new[] { registration.ServiceType }.Concat(args).ToArray(); Type registrarType; if (genericTypeDef == typeof(DependencyFactoryModel <>)) { registrarType = typeof(FactoryRegistration <,>).MakeGenericType(allArgs); } else if (genericTypeDef == typeof(DependencyFactoryModel <,>)) { registrarType = typeof(FactoryRegistration <, ,>).MakeGenericType(allArgs); } else if (genericTypeDef == typeof(DependencyFactoryModel <, ,>)) { registrarType = typeof(FactoryRegistration <, , ,>).MakeGenericType(allArgs); } else if (genericTypeDef == typeof(DependencyFactoryModel <, , ,>)) { registrarType = typeof(FactoryRegistration <, , , ,>).MakeGenericType(allArgs); } else if (genericTypeDef == typeof(DependencyFactoryModel <, , , ,>)) { registrarType = typeof(FactoryRegistration <, , , , ,>).MakeGenericType(allArgs); } else { throw new NotSupportedException(); } var registrar = (IRegisterFactories)Activator.CreateInstance(registrarType); registrar.Register(GetComponentName(registration.ServiceType), _windsorContainer, registration); }
public ITypeRegistrationOptions <TConcrete> Transient <TArg1, TConcrete>(Expression <Func <TArg1, TConcrete> > factory) { Model = new DependencyFactoryModel <TArg1, TConcrete>(factory) { Lifetime = DependencyLifetime.Transient }; return(new TypeRegistrationOptions <TConcrete>(this)); }
public ITypeRegistrationOptions <TConcrete> Transient <TConcrete>() { Model = new DependencyFactoryModel <TConcrete>() { Lifetime = DependencyLifetime.Transient }; return(new TypeRegistrationOptions <TConcrete>(this)); }
public ITypeRegistrationOptions <TConcrete> PerRequest <TConcrete>(Expression <Func <TConcrete> > factory) { Model = new DependencyFactoryModel <TConcrete>(factory) { Lifetime = DependencyLifetime.PerRequest }; return(new TypeRegistrationOptions <TConcrete>(this)); }
public ITypeRegistrationOptions Singleton <TArg1, TArg2, TConcrete>(Expression <Func <TArg1, TArg2, TConcrete> > factory) { Model = new DependencyFactoryModel <TArg1, TArg2, TConcrete>(factory) { Lifetime = DependencyLifetime.Singleton }; return(this); }
public ITypeRegistrationOptions PerRequest <TArg1, TArg2, TArg3, TArg4, TConcrete>(Expression <Func <TArg1, TArg2, TArg3, TArg4, TConcrete> > factory) { Model = new DependencyFactoryModel <TArg1, TArg2, TArg3, TArg4, TConcrete>(factory) { Lifetime = DependencyLifetime.PerRequest }; return(this); }
public ITypeRegistrationOptions PerRequest <TConcrete>() { Model = new DependencyFactoryModel <TConcrete>() { Lifetime = DependencyLifetime.PerRequest }; return(this); }
public void Register(string componentName, IWindsorContainer container, DependencyFactoryModel registration) { if (registration.Factory == null) { container.Register(Component .For <TService>() .Named(componentName) .ImplementedBy <TConcrete>() .LifeStyle.Is(ConvertLifestyles.ToLifestyleType(registration.Lifetime))); } else { var factoryMethod = ((Expression <Func <TConcrete> >)registration.Factory).Compile(); container.Register( Component.For <TService>() .Named(componentName) .UsingFactoryMethod(factoryMethod) .LifeStyle.Is(ConvertLifestyles.ToLifestyleType(registration.Lifetime))); } }
public void Register(DependencyFactoryModel registration) { object resolveFromRegistration(ResolveContext ctx) { return(registration.UntypedFactory(registration.Arguments.Select(ctx.Resolve).ToArray())); } Func <ResolveContext, object> factory = null; if (registration.Factory != null) { factory = resolveFromRegistration; } Registrations.Add(new DependencyRegistration( registration.ServiceType, registration.ConcreteType, registration.Lifetime, _lifetimeManagers[registration.Lifetime], factory )); }