public ITypeRegistrationOptions <TConcrete> Singleton <TConcrete>()
 {
     Model = new DependencyFactoryModel <TConcrete> {
         Lifetime = DependencyLifetime.Singleton
     };
     return(new TypeRegistrationOptions <TConcrete>(this));
 }
Exemplo n.º 2
0
        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));
 }
Exemplo n.º 6
0
 public ITypeRegistrationOptions Singleton <TArg1, TArg2, TConcrete>(Expression <Func <TArg1, TArg2, TConcrete> > factory)
 {
     Model = new DependencyFactoryModel <TArg1, TArg2, TConcrete>(factory)
     {
         Lifetime = DependencyLifetime.Singleton
     };
     return(this);
 }
Exemplo n.º 7
0
 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);
 }
Exemplo n.º 8
0
 public ITypeRegistrationOptions PerRequest <TConcrete>()
 {
     Model = new DependencyFactoryModel <TConcrete>()
     {
         Lifetime = DependencyLifetime.PerRequest
     };
     return(this);
 }
Exemplo n.º 9
0
 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)));
     }
 }
Exemplo n.º 10
0
        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
                                  ));
        }