// typeof(IocPerformance.Classes.Properties.IComplexPropertyObject3)
 internal static object Create_19(IResolverContext r, IScope scope)
 {
     return(new IocPerformance.Classes.Properties.ComplexPropertyObject3 {
         ServiceA = (IocPerformance.Classes.Properties.ServiceA)SingletonReuse.GetOrAddItem(r.SingletonScope(), false, 59, () => new IocPerformance.Classes.Properties.ServiceA()), ServiceB = (IocPerformance.Classes.Properties.ServiceB)SingletonReuse.GetOrAddItem(r.SingletonScope(), false, 60, () => new IocPerformance.Classes.Properties.ServiceB()), ServiceC = (IocPerformance.Classes.Properties.ServiceC)SingletonReuse.GetOrAddItem(r.SingletonScope(), false, 61, () => new IocPerformance.Classes.Properties.ServiceC()), SubObjectA = new IocPerformance.Classes.Properties.SubObjectA {
             ServiceA = (IocPerformance.Classes.Properties.ServiceA)SingletonReuse.GetOrAddItem(r.SingletonScope(), false, 59, () => new IocPerformance.Classes.Properties.ServiceA())
         }, SubObjectB = new IocPerformance.Classes.Properties.SubObjectB {
             ServiceB = (IocPerformance.Classes.Properties.ServiceB)SingletonReuse.GetOrAddItem(r.SingletonScope(), false, 60, () => new IocPerformance.Classes.Properties.ServiceB())
         }, SubObjectC = new IocPerformance.Classes.Properties.SubObjectC {
             ServiceC = (IocPerformance.Classes.Properties.ServiceC)SingletonReuse.GetOrAddItem(r.SingletonScope(), false, 61, () => new IocPerformance.Classes.Properties.ServiceC())
         }
     });
 }
        public void RegisterFactory <T1, T2, T3, TResult>(Func <T1, T2, T3, TResult> factory, RegistrationMode mode, RegistrationLifestyle lifestyle) where TResult : class
        {
            IReuse reuse = null;

            switch (lifestyle)
            {
            case RegistrationLifestyle.Singleton:
                reuse = new SingletonReuse();
                break;

            case RegistrationLifestyle.SingletonPerScope:
                reuse = new CurrentScopeReuse();
                break;

            case RegistrationLifestyle.SingletonPerObjectGraph:
                throw new NotSupportedException("");
            }

            _container.RegisterDelegate(r => factory(r.Resolve <T1>(), r.Resolve <T2>(), r.Resolve <T3>()), reuse);
        }
        public void Registration(IEnumerable <RegistrationDefinition> definitions)
        {
            foreach (var definition in definitions)
            {
                IReuse reuse = null;

                switch (definition.RegistrationLifestyle)
                {
                case RegistrationLifestyle.Singleton:
                    reuse = new SingletonReuse();
                    break;

                case RegistrationLifestyle.SingletonPerScope:
                    reuse = new CurrentScopeReuse();
                    break;
                }

                PropertiesAndFieldsSelector madeOf = null;

                if (definition.MemberInjectionList != null)
                {
                    madeOf = PropertiesAndFields.Of;

                    foreach (var injectionInfo in definition.MemberInjectionList)
                    {
                        switch (injectionInfo.InjectionType)
                        {
                        case MemberInjectionType.Field:
                        case MemberInjectionType.Property:
                            madeOf = madeOf.Name(injectionInfo.MemberName);
                            break;

                        case MemberInjectionType.Method:
                            throw new NotSupportedException();
                        }
                    }
                }

                _container.Register(definition.ExportType, definition.ActivationType, reuse, madeOf);
            }
        }
 // typeof(IocPerformance.Classes.Complex.IComplex1)
 internal static object Create_17(IResolverContext r, IScope scope)
 {
     return(new IocPerformance.Classes.Complex.Complex1((IocPerformance.Classes.Complex.FirstService)SingletonReuse.GetOrAddItem(r.SingletonScope(), false, 53, () => new IocPerformance.Classes.Complex.FirstService()), (IocPerformance.Classes.Complex.SecondService)SingletonReuse.GetOrAddItem(r.SingletonScope(), false, 54, () => new IocPerformance.Classes.Complex.SecondService()), (IocPerformance.Classes.Complex.ThirdService)SingletonReuse.GetOrAddItem(r.SingletonScope(), false, 55, () => new IocPerformance.Classes.Complex.ThirdService()), new IocPerformance.Classes.Complex.SubObjectOne((IocPerformance.Classes.Complex.FirstService)SingletonReuse.GetOrAddItem(r.SingletonScope(), false, 53, () => new IocPerformance.Classes.Complex.FirstService())), new IocPerformance.Classes.Complex.SubObjectTwo((IocPerformance.Classes.Complex.SecondService)SingletonReuse.GetOrAddItem(r.SingletonScope(), false, 54, () => new IocPerformance.Classes.Complex.SecondService())), new IocPerformance.Classes.Complex.SubObjectThree((IocPerformance.Classes.Complex.ThirdService)SingletonReuse.GetOrAddItem(r.SingletonScope(), false, 55, () => new IocPerformance.Classes.Complex.ThirdService()))));
 }
 // typeof(IocPerformance.Classes.Standard.ISingleton2)
 internal static object Create_14(IResolverContext r, IScope scope)
 {
     return(SingletonReuse.GetOrAddItem(r.SingletonScope(), false, 39, () => new IocPerformance.Classes.Standard.Singleton2()));
 }
 // typeof(IocPerformance.Classes.Standard.ICombined3)
 internal static object Create_13(IResolverContext r, IScope scope)
 {
     return(new IocPerformance.Classes.Standard.Combined3((IocPerformance.Classes.Standard.Singleton3)SingletonReuse.GetOrAddItem(r.SingletonScope(), false, 40, () => new IocPerformance.Classes.Standard.Singleton3()), new IocPerformance.Classes.Standard.Transient3()));
 }